【问题标题】:Sails.js to client using sails.sockets.join and sails.sockets.broadcast doesn't return info to the clientSails.js 到客户端使用sails.sockets.join 和sails.sockets.broadcast 不返回信息给客户端
【发布时间】:2014-07-19 07:20:36
【问题描述】:

我正在尝试在客户端使用 Sails.js 和sails.io.js 创建一对一聊天。

我可以让io.socket.getio.socket.post 工作,但我无法按照此处的说明从sails.sockets.broadcastModel.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


    【解决方案1】:

    (那是我。我认为我的评论可能不值得,因为我重读了你的帖子,你说你已经开始工作了,所以我认为我错了。我的评论大意如下,但我没有不记得逐字)

    您是否检查过以确保您确实在客户端侦听中得到了响应?您实际上在整个代码中获得了哪些日志语句?在客户端 socket.get 中放置一个 console.log('get user listen') 或其他内容。

    【讨论】:

    • 谢谢,抱歉我没有早点发现。是的,我把没有失败作为它工作的迹象,但显然不是哈哈。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 2019-04-08
    • 2012-11-02
    • 1970-01-01
    相关资源
    最近更新 更多