在 sails v0.11 中发送消息(客户端)
Emitting a message in sails v0.11 (client-side)
我在使用最新版本的 sails.js (0.11.0) 时遇到一些问题。它在 github 中声明将接受纯 socket.io 代码,在 sails.js 中声明 运行;然而,我只是想在客户点击类似这样的东西时发出一条消息:
$('#myBtn').on('click', function(){
io.socket.emit('message', {
message: {
subject: subject
},
sender: id
});
});
我最终在 io.socket.emit()
的行上得到一个 "Uncaught TypeError: undefined is not a function" 又名 emit
不是 io.socket 的函数。
以下是我看过的一些参考资料:
- https://github.com/balderdashy/sails/issues/2397
- http://www.tysoncadenhead.com/blog/getting-started-with-socket-io#.VQCFjvnF9tU
我对 sails 的更新版本有一种感觉,我应该按照以下方式做一些事情,而不是发出消息:
io.socket.post('/user/message', data, function(data, jwres) {
});
这里的以下答案让我有些担心:
- Sending session specific messages with socket.io and sails.js
它指出 "class rooms" 与 publishCreate
、publishDestroy
、introduce
和 obituary
一起被弃用。
那么我是遵循 Pub/Sub 范式,重写我的更多 "socket-io-ish" 代码以利用 sails 蓝图和 Pub/Sub,还是继续我的 socket-io 方式?
是否有另一种使用 sails 从客户端发出消息的方法?
您是正确的,通过套接字与服务器通信的推荐方式是使用 RESTful socket client methods。好处是您可以使用常规的 Sails 路由和 controller/action 架构进行套接字通信,而不必在后端支持整个其他层的订阅和事件处理。这是@mikermcneil 最初创建 Sails 的主要原因之一。需要注意两点:
- 您可以在控制器操作中使用
req.isSocket
来确定请求是否来自套接字,并且
- 您可以使用
io.socket._raw
在客户端上获取原始的基础 socket.io 实例,该实例将具有 emit
方法。但同样,这不是推荐的做法。
我在使用最新版本的 sails.js (0.11.0) 时遇到一些问题。它在 github 中声明将接受纯 socket.io 代码,在 sails.js 中声明 运行;然而,我只是想在客户点击类似这样的东西时发出一条消息:
$('#myBtn').on('click', function(){
io.socket.emit('message', {
message: {
subject: subject
},
sender: id
});
});
我最终在 io.socket.emit()
的行上得到一个 "Uncaught TypeError: undefined is not a function" 又名 emit
不是 io.socket 的函数。
以下是我看过的一些参考资料:
- https://github.com/balderdashy/sails/issues/2397
- http://www.tysoncadenhead.com/blog/getting-started-with-socket-io#.VQCFjvnF9tU
我对 sails 的更新版本有一种感觉,我应该按照以下方式做一些事情,而不是发出消息:
io.socket.post('/user/message', data, function(data, jwres) {
});
这里的以下答案让我有些担心:
- Sending session specific messages with socket.io and sails.js
它指出 "class rooms" 与 publishCreate
、publishDestroy
、introduce
和 obituary
一起被弃用。
那么我是遵循 Pub/Sub 范式,重写我的更多 "socket-io-ish" 代码以利用 sails 蓝图和 Pub/Sub,还是继续我的 socket-io 方式?
是否有另一种使用 sails 从客户端发出消息的方法?
您是正确的,通过套接字与服务器通信的推荐方式是使用 RESTful socket client methods。好处是您可以使用常规的 Sails 路由和 controller/action 架构进行套接字通信,而不必在后端支持整个其他层的订阅和事件处理。这是@mikermcneil 最初创建 Sails 的主要原因之一。需要注意两点:
- 您可以在控制器操作中使用
req.isSocket
来确定请求是否来自套接字,并且 - 您可以使用
io.socket._raw
在客户端上获取原始的基础 socket.io 实例,该实例将具有emit
方法。但同样,这不是推荐的做法。