[英]send data from server to client on server event with 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數據
當然,您只需要保存要發送到的套接字或使用可以廣播到的聊天室即可。 保存套接字后的外觀如下:
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庫為您管理的客戶端套接字的已保存列表一樣。
如果您在“事件”聊天室中擁有所有客戶端,則可以從服務器向該聊天室中的所有客戶端進行廣播,如下所示:
io.to('events').emit("whateverMsg", {yourData: someData, otherData: whatever});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.