【发布时间】:2014-07-19 07:20:36
【问题描述】:
我正在尝试在客户端使用 Sails.js 和sails.io.js 创建一对一聊天。
我可以让io.socket.get 和io.socket.post 工作,但我无法按照此处的说明从sails.sockets.broadcast 或Model.publish 收到任何信息:
Personalized chat using Sails.js
或这里
Sails.js + socket.io: Sending messages from server to clients
服务器端代码:
用户控制器.js
module.exports = {
listen: function(req, res) {
console.log("about to join " + userId);
sails.sockets.join(req.socket, req.param('userId'));
}
};
发件人:http://beta.sailsjs.org/#/documentation/reference/sails.sockets/sails.sockets.join.html
MessageController.js
// Some code to get userId and message model here
console.log("about to broadcast on " + userId);
sails.sockets.broadcast(userId, 'conversation_message', message);
// Did not JSONify the message model, not sure if I need to?
发件人:http://beta.sailsjs.org/#/documentation/reference/sails.sockets/sails.sockets.broadcast.html
客户端代码:
// Some code to get userId...
io.socket.get('/user/listen', {
userId: userId
}, function() {
io.socket.on('conversation_message', function(message) {
console.log("we have a message");
});
});
当我使用userId 触发触发广播的路由时,不会向此客户端代码发送任何内容以记录we have a message。有什么想法吗?
我也尝试了 Model.subscribe / Model.publish 方法,但没有运气——同样的问题。
更新:listen 函数实际上并没有返回——正如有人在他们后来删除的评论中建议的那样。将res.send(200); 添加到listen 函数的末尾就足够了。
如果该人再次添加他们的评论作为答案,我会接受。
【问题讨论】:
标签: javascript node.js websocket socket.io sails.js