【问题标题】:sails.js + socket.io: Can't receive standard sail.js/socket.io messages on clientSails.js + socket.io:无法在客户端接收标准sail.js/socket.io 消息
【发布时间】:2014-06-13 17:39:30
【问题描述】:

使用来自sails.js (0.10.0-rc5) 的最新测试版,我正在尝试这样做:

sails new Test
cd Test 
sails generate  api user

创建文件 assets/js/test.js

var socket = io.connect('http://localhost:1337');
socket.on('connect',function() {
    console.log('connected');
    socket.request('/user',{}, function(users) { 
        console.log(users); 
    });

    socket.on('message', function(msg) {
        console.log("Message: " + msg);
    });

    socket.on('user', function(msg) {
        console.log("User: " + msg);
    });
});

我的问题

console.log("User: " + msg);console.log("Message: " + msg); 当我没有收到任何消息时创建或更新用户。 根据文档和 Intro tosails.js 视频,此 socket.io 消息应自动发送。

在我的客户端上成功接收sails.js/socket.io 消息我缺少什么?

【问题讨论】:

  • 你做了什么来解决这个问题?

标签: socket.io sails.js


【解决方案1】:

如果您安装了最新的 NPM 版本,那么您还将拥有最新版本的 Sails socket client。查看其page on Github 了解基本用法,然后查看PubSub section of the Sails migration guide,它解释了 Sails v0.9.9x(Sails.js 介绍视频显示)与最新版本之间的差异。最后,您的代码应该看起来更像:

// Note--the latest sails socket client connects automatically!

// Get all of the existing users--also subscribes to socket events
// for those users
io.socket.get('/user', function serverResponded (body, sailsResponseObject) {
    console.log(body);
});

// When a socket message about a user is received, display it
io.socket.on('user', function(data) {
    console.log(data);
});

备注

  1. 特别注意迁移指南中关于.watch()的部分;这意味着您不会再自动获得create 事件,而必须使用(对于User 模型)User.watch() 在服务器代码中订阅它们。
  2. 请记住,通常您不会收到有关您自己触发的操作的套接字消息,因此如果您想测试您的消息处理代码是否正常工作,最好打开两个窗口(或选项卡)并执行您的操作一个请求,同时监视另一个事件。
  3. 还请记住,您只有在发出 socket 请求时才会订阅 socket 事件;对/users 的AJAX 调用将检索所有当前用户,但您不会订阅事件。必须使用io.socket.get 完成。

【讨论】:

    猜你喜欢
    • 2021-05-23
    • 2018-06-26
    • 1970-01-01
    • 2014-01-20
    • 2020-02-01
    • 2015-01-16
    • 2014-12-26
    • 2012-04-07
    • 2013-09-09
    相关资源
    最近更新 更多