2014-09-28 183 views
0

服务器事件,我可以在服务器上用细绳标签发送数据与从服务器发送数据到客户端上socket.io

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数据

+0

不,我不这么认为! – Ravi 2014-09-28 16:13:50

回答

0

当然,你只需要保存要发送或使用聊天室,你可以广播到插座。这里是什么样子,如果你保存插座,如:

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}); 
+0

这个工程。完善。它就像我=这个。我发现了另一个包含导入事件模块的解决方案[链接] http://stackoverflow.com/questions/8588895/node-js-socket-io-broadcast-from-server-rather-than-from-a-specific-client。你的解决方案更加简单。 – wetlip 2014-09-28 19:44:58

相关问题