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,publishDestroy和introduce,以及obituary.
那么我是否遵循Pub/Sub范例,重新编写我的更多"socket-io-ish"代码以利用sails Blueprints和Pub/Sub,或者继续以我的socket-io方式?
是否有另一种使用风帆从客户端发出消息的方法?
您是正确的,通过套接字与服务器通信的推荐方法是使用 RESTful套接字客户端方法。好处是您可以使用常规 Sails 路由和控制器/操作架构进行套接字通信,而不必在后端支持整个其他层的订阅和事件处理。这是 @mikermcneil 最初创建 Sails 的主要原因之一。有两点需要注意:
req.isSocket在控制器操作中使用来确定请求是否来自套接字,并且io.socket._raw,该实例将具有该emit方法。但同样,这不是推荐的做法。