我试图在客户端使用Sails.js和sails.io.js创建一个一对一的聊天。
我可以让io.socket.get
和io.socket.post
工作,但我没有能够从sails.sockets.broadcast
或Model.publish
收到任何东西,如下所示:
使用Sails.js进行个性化聊天
这里或
Sails.js + socket。io:从服务器向客户端发送消息
服务器端代码:
UserController.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//文档/引用/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//文档/引用/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
。什么好主意吗?
我已经试过模型了。订阅/模型。同样的问题
Update: listen
函数实际上没有返回——正如有人在评论中建议的那样,他们后来删除了。将res.send(200);
添加到listen
函数的末尾就足以使其工作了。
如果那个人能再加一次评论作为答案,我会接受的。
我认为我的评论可能不值得,因为我重读了你的帖子,你说你已经开始工作了,所以我认为我错了。我的评论大意如下,但我不记得逐字记录了)
您是否检查过以确保您实际上在客户端侦听上得到响应?您在整个代码中实际得到的日志语句是什么?在客户端套接字中添加console.log('get user listen')或其他内容。get.