在sails v0.11中发送消息(客户端)

Tro*_*nel 5 sockets socket.io sails.js

我遇到了最新版本的sails.js(0.11.0)的一些问题.它在github中声明普通的socket.io代码将被接受并在sails.js中运行; 但是,当我们点击这样的东西时,我只是试图从客户端发出一条消息:

$('#myBtn').on('click', function(){
     io.socket.emit('message', {  
         message: {
             subject: subject
         },
         sender: id
     });  

});
Run Code Online (Sandbox Code Playgroud)

我最终得到一个"遗漏的类型错误:未定义是不是一个函数"上线io.socket.emit()又名emit不是io.socket的函数.

以下是我看过的一些参考资料:

我对风帆的更新版本有一种感觉,而不是发出消息我应该做的事情是:

io.socket.post('/user/message', data, function(data, jwres) {

});
Run Code Online (Sandbox Code Playgroud)

这里有一些关注我的答案:

它声明"课堂房间"与publishCreate,publishDestroyintroduce,以及obituary.

那么我是否遵循Pub/Sub范例,重新编写我的更多"socket-io-ish"代码以利用sails Blueprints和Pub/Sub,或者继续以我的socket-io方式?

是否有另一种使用风帆从客户端发出消息的方法?

sgr*_*454 3

您是正确的,通过套接字与服务器通信的推荐方法是使用 RESTful套接字客户端方法。好处是您可以使用常规 Sails 路由和控制器/操作架构进行套接字通信,而不必在后端支持整个其他层的订阅和事件处理。这是 @mikermcneil 最初创建 Sails 的主要原因之一。有两点需要注意:

  1. 您可以req.isSocket在控制器操作中使用来确定请求是否来自套接字,并且
  2. 您可以使用 获取客户端上原始的底层 socket.io 实例io.socket._raw,该实例将具有该emit方法。但同样,这不是推荐的做法。