sails.js + socket.io:无法在客户端收到标准的sail.js / socket.io消息

时间:2014-04-28 08:54:02

标签: socket.io sails.js

使用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(“用户:”+ msg); console.log(“消息:”+ msg); 在我没有收到任何消息创建或更新用户。 根据文档和介绍sails.js 视频,这个socket.io消息应该自动发送。

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

1 个答案:

答案 0 :(得分:3)

如果您安装了最新的NPM版本,那么您还将拥有最新版本的Sails socket client。查看其page on Github的基本用法,然后查看PubSub section of the Sails migration guide,它解释了Sails v0.9.9x(Stro.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. 还要记住,当您发出套接字请求时,您只能订阅套接字事件;对/users的AJAX调用将检索所有当前用户,但您不会订阅事件。必须使用io.socket.get
  4. 完成