我尝试在客户端使用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
服务器端代码:
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/#/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
函数的末尾足以使其正常工作。
如果那个人再次添加他们的评论作为答案,我会接受它。
答案 0 :(得分:1)
(那就是我。我认为我的评论可能不值得,因为我重读你的帖子,你说你有工作,所以我认为我错了。我的评论是下面的效果,但我不# 39;记住逐字记录)
您是否检查过以确保您实际上是在客户端收听回复?您在整个代码中实际获得了哪些日志语句?把一个console.log(' get user listen')放在客户端socket.get里面。