从服务器端控制器发送给所有客户端

时间:2017-07-18 09:56:15

标签: node.js sockets express socket.io

我是这个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);

插座/ 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来设置我的基础项目。感谢您在这方面的任何帮助。

1 个答案:

答案 0 :(得分:0)

你发射事件的方式是错误的。您正在关注的repo可能是针对socket.io版本< 1.0

使用此

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

而不是

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