簡體   English   中英

Socket.io-同時發送用戶和消息數據

[英]Socket.io - sending both user and message data

我一直在關注Socket.io的“入門”頁面,並完成了主要任務。 但是,現在我正在嘗試實現一項新功能,以便它將用戶名和消息一起發送回去。 雖然這可以很好地發回消息,但是我不確定如何實現它,所以它還會為用戶發回數據。 我知道我可以復制下面的代碼並將其編輯為用戶特定的內容,但是那又如何呢?

正常發送用戶:

socket.emit('chat message', $('#u').val());

然后,在服務器上檢索它:

  socket.on('chat message', function(msg){
      io.emit('chat message', msg);
  });

然后,在頁面上顯示該信息:

socket.on('chat message', function(msg){
    $('#messages').append($('<li class="mesg">').text(msg));
  });

就像喬納森(Jonathan)評論的那樣,只需將其作為對象發送即可。

請注意,socketio會自動為您進行序列化/反序列化,因此您不需要額外的JSON.stringify步驟。

這是我現在正在使用的游戲代碼的示例:

//client.js
io.emit('waypoint', { x: players.me.targetX, y: players.me.targetY });

//server.js
socket.on('waypoint', function (msg) {
   console.log(msg.x, msg.y);
});

所以就您而言,像這樣

//client.js
    io.emit('chat message', { msg: $('#u').val(),
                              userColor: 'green',
                              moreData:{ isAwesome:true, favoritePie:'apple'} });

我不確定自己是否正確理解了您的問題,但是我認為您需要做的就是發出一個JSON對象作為您的消息,然后在另一端解析響應,如下所示:

var obj = {message: $('#u').val(), user: "User"};
socket.emit('chat message', JSON.stringify(obj));

socket.on('chat message', function(msg){
      io.emit('chat message', msg);
  });

socket.on('chat message', function(msg){
    var message = JSON.parse(msg).message; //$('#u').val()
    var user = JSON.parse(msg).user;       //"User"
    $('#messages').append($('<li class="mesg">').text(message));
  });

暫無
暫無

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

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