【问题标题】:Emit to all the clients from Server side controller从服务器端控制器发送到所有客户端
【发布时间】:2017-12-23 02:51:18
【问题描述】:

我是这个 socket.io 世界的新手。我已成功将 socket.io 集成到我的客户端和服务器。我还可以使用 emit 方法从客户端向所有连接的设备发送消息。

但我的问题是我想从我的节点 JS 控制器方法发送一些消息。 成功将数据插入数据库后,我想将其广播给所有连接的用户。但不知何故,它抛出了错误:

这是我的文件:

app.js

var server = https.createServer(app.get("httpsOptions"), app);
var io = require('socket.io');
io = io.listen(server);
require('./sockets/base')(io);

socket/base.js

module.exports = function (io) {   'use strict';   io.on('connection', function (socket) {
    socket.broadcast.emit('user connected');

    socket.on('message', function (from, msg) {

      console.log('recieved message from', from, 'msg', JSON.stringify(msg));

      console.log('broadcasting message');
      console.log('payload is', msg);
      io.sockets.emit('broadcast', {
        payload: msg,
        source: from
      });
      console.log('broadcast complete');
    });   }); };

databaseController.js

exports.insertIntoDatabase = function(req, res){
  // code to insert data into the database
  var output = req.query;
  // Now I am completely clue less, how can I broadcast "output"  to all the connected users.
}

我已使用 https://github.com/krimple/angular-socketio-chat 设置我的基础项目。感谢您在这方面的任何帮助。

【问题讨论】:

    标签: node.js sockets express socket.io


    【解决方案1】:

    您发出事件的方式是错误的。您关注的 repo 可能是 socket.io 版本

    使用这个

    io.emit('broadcast', {
        payload: msg,
        source: from
      });
    

    代替

    io.sockets.emit('broadcast', {
        payload: msg,
        source: from
      });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-20
      • 1970-01-01
      • 2021-02-15
      • 1970-01-01
      相关资源
      最近更新 更多