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