【问题标题】:SailsJS, SocketIO, not getting messagesSailsJS,SocketIO,没有收到消息
【发布时间】:2014-04-27 23:13:09
【问题描述】:

我有一个简单的登录脚本。我在 SessionController 中创建了一个名为 create 的方法来处理登录。我做了所有需要的验证,然后将用户设置为活动并保存它们。我还使用User.publishUpdate() 将消息发送回客户端。

问题是我根本没有收到任何消息。加载页面后,我为所有用户调用User.subscribe(req.socket, users);,以便他们都订阅。不太确定为什么不发送消息。

我正在使用sails 0.10.0。

这是在页面加载时调用的 subscribe 方法:

User.find({}).exec(function (error, users) {
    if (error) {
        res.json({
            error: error
        });
    }

    // Subscribe to the model class
    User.subscribe(req.socket);

    // subscribe to the model instance
    User.subscribe(req.socket, users);

    res.send(200);

});

以及用于登录的 create 方法(已删除与此问题无关的代码):

user.active = true;
req.session.authenticated = true;
req.session.User = user;

user.save(function (error, user) {

    if (error) {
        res.send(error, 500);
    }

    User.publishUpdate(user.id, {
        loggedIn: true,
        id: user.id,
        action: ' has logged in'
    });

    res.json(user, 200);
});

我通过套接字将请求发送到订阅和登录方法

socket.get('/user/subscribe');

socket.get('/session/create', {//stuff}, callback)

【问题讨论】:

  • 你能贴出你用来监听事件的前端代码吗?
  • 仅使用位于app.js 文件中的socket.on('message', callback); 事件

标签: javascript node.js socket.io sails.js


【解决方案1】:

PubSub 在 Sails v0.10 中发生了很大变化,看起来您正在使用一些 v0.9.x 语义。您可以在migration guide 和新的Model Methods reference 中阅读所有相关信息,但就影响您的因素而言,主要是:

消息不再使用“消息”事件发布。相反,它们使用模型的身份作为事件名称发布。所以,把你的听众改成:

socket.on('user', callback)

你会开始听到一些声音。

与您有关的另一件事是“Model classrooom”已被弃用,就像使用 .subscribe() 和一个参数来订阅它一样。相反,请使用User.watch(req) 来获取有关新创建用户的通知。

更新.watch() 方法一起,现在sails.config.blueprints(在您的config/blueprints.js 文件中设置)中还提供了一个autoWatch 选项,如果true,将恢复到 v0.9.x 行为:任何时候套接字订阅模型实例,它也将开始“监视”该模型类的“创建”事件。

【讨论】:

  • 我爱你,伙计!我已经阅读了迁移文档,但找不到任何关于消息事件更改的提及。你有那个特定部分的链接吗?可能还有更多内容需要阅读。谢谢
  • 我将 v0.10 迁移指南的链接放在我的回答中;这是第一部分。您可能正在阅读网站上的迁移指南(仍然是关于迁移到 v0.9.x)
  • @ScottGress 链接已失效。
  • 0.10 迁移指南现已发布(不过可能会再次迁移):github.com/balderdashy/sails-docs/blob/master/concepts/…
  • 实际上,这些文档现在都在sailsjs.org 上,所以它们应该会存在一段时间。迁移指南是here
猜你喜欢
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
  • 2021-12-21
  • 2011-09-07
  • 2017-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多