我在使用最新版本的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) {
});
有些事情让我担心以下答案:
它声明"教室"与publishCreate
,publishDestroy
,introduce
和obituary
一起被弃用。
所以我遵循Pub / Sub范式,重写我的更多" socket-io-ish"利用风帆蓝图和代码的代码发布/订阅,还是继续我的socket-io时尚?
是否有另一种使用风帆从客户端发出消息的方式?
答案 0 :(得分:2)
您是正确的,建议通过套接字与服务器通信的方法是使用RESTful socket client methods。好处是您可以使用常规Sails路由和控制器/操作体系结构进行套接字通信,而不必在后端支持整个其他层的订阅和事件处理。这是@mikermcneil最初创建Sails的主要原因之一。有两点需要注意:
req.isSocket
来确定请求是否来自套接字,io.socket._raw
在客户端上获取原始的底层socket.io实例,该实例将使用emit
方法。但同样,这不是推荐的做法。