0

我将 NodeJS 与 Express 和 SocketIO 一起使用。我正在尝试在“连接”回调中注册一个客户端,然后当访问 api/socket/test URL 时,我想向该客户端发送一条消息。它可以在我的本地主机上运行,​​但是当我在服务器上运行它时,我收到 500 TypeError: Cannot call method 'emit' of undefined error。我想问题在于动作的同步,但我不确定如何重写代码以使其工作。这是我的 server.js 的重要部分:

var connected_sockets = new Array();
app.get('/api/socket/test', function(req, res){
connected_sockets[0].emit('news', {hello: 'word'});
  res.json({"status" : "green", "socket" : connected_sockets[0].id});
});

// redirect all others to the index (HTML5 history)
app.get('*', routes.index);

/**
 * Start Server
 */

var server = http.createServer(app);
var sio = io.listen(server);

sio.sockets.on('connection', function(socket){
  connected_sockets.push(socket);
});

server.listen(app.get('port'), process.env.OPENSHIFT_NODEJS_IP);
4

0 回答 0