簡體   English   中英

使用socket.io在服務器事件中將數據從服務器發送到客戶端

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM