我可以使用
在服务器上发送带字符串标签的数据 import io = require('socket.io');
var sio = io.listen(server);
sio.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
外部套接字我只能发送一个字符串
sio.sockets.emit( "keystroke");
有没有办法让数据在外面连接'而不仅仅是一个字符串。
我想在事件服务器端发送带有相同标签的json数据,例如' news'
答案 0 :(得分:1)
当然,您只需要保存要发送的套接字或使用可以广播的聊天室。这是保存套接字的样子:
import io = require('socket.io');
var sio = io.listen(server);
var client;
sio.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
client = socket;
});
// then, sometime later in response to some server-side event,
// you can send to that saved socket
client.emit("whatever", {yourData: someData, otherData: whatever});
当然,您可能不会像在此处显示的那样将客户端套接字保存在变量中,因为您可能支持许多不同的客户端。你应该如何保存它取决于你想要做什么。如果多个客户端想要注册对特定类型事件的兴趣,那么socket.io中内置的聊天室功能可以很好地服务于该目的。每个客户端都可以请求使用您自己的特定命令加入该聊天室,服务器可以将它们放入该聊天室,然后,当事件发生时,您可以将数据广播到聊天室,它将被发送给所有客户端。放进聊天室。聊天室就像socket.io库为您管理的客户端套接字保存列表一样。
如果您拥有"事件中的所有客户" chatrooom,然后您可以从服务器广播到该聊天室中的所有客户端:
io.to('events').emit("whateverMsg", {yourData: someData, otherData: whatever});