簡體   English   中英

從 socket.io 返回一個值到客戶端

[英]Return a value from socket.io to client side

我正在嘗試將當前抽屜的 ID 從服務器接收到客戶端,用於我正在制作的東西。 這是我到目前為止所得到的

客戶:

    socket.emit('returnDrawer');

    socket.on('returnDrawer', function(ret)
    {
        console.log("id:", ret);
    })

服務器:

socket.on('returnDrawer', function() {
    return users[currentDrawer].ioid;
});

但是我的客戶端回調根本沒有被當前的抽屜 id 調用,可以使用一些幫助。

你有沒有試過類似的東西:

客戶

socket.emit('giveMeDrawer');

socket.on('returnDrawer', function(ret) {
  console.log("id:", ret);
})

服務器

socket.on('giveMeDrawer', function() {
  socket.emit('returnDrawer', users[currentDrawer].ioid);
});

或遵循指南(來自 socket.io 文檔)。

您可以使用不同的事件名稱進行發送和接收。 這將幫助您在未來很好地擴展。

例如,上面的代碼可以寫成:-

// implementing client side
  socket.emit('returnDrawer');
  socket.on('returnDrawerResponse', function(message) {
    console.log('id', message)
  });

對於服務器端,你可以這樣寫:

// implementing server side
  socket.on('returnDrawer', function(){ 
   // write Your awesome code here
   const userId = users[currentDrawer].ioid()
   socket.emit('returnDrawerResponse', userId)
 })

您可以將回調函數作為參數發送給emit()。 這是我的一個項目中的一個例子。 沒有抽屜,只有動畫。

客戶端

socket.emit('animate', 'text', payload, (response) => {
    console.log(response);
});

服務器端

socket.on('animate', (animation, payload, callback) => {

    callback = typeof callback == "function" ? callback : () => {};

    try {
        this.runAnimation(animation, payload);
        callback({status:'OK'});
    }
    catch(error) {
        callback({error:error.message});
    }

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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