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

时间:2015-03-11 22:28:36

标签: 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
     });  

});

我最终得到一个"未捕获的TypeError:undefined不是一个函数"在io.socket.emit() aka emit的行上不是io.socket的函数。

以下是我看过的一些参考文献:

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

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

});

有些事情让我担心以下答案:

它声明"教室"与publishCreatepublishDestroyintroduceobituary一起被弃用。

所以我遵循Pub / Sub范式,重写我的更多" socket-io-ish"利用风帆蓝图和代码的代码发布/订阅,还是继续我的socket-io时尚?

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

1 个答案:

答案 0 :(得分:2)

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

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