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 会自动为您 serializes/deserializes,因此您不需要额外的 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));
});
我一直在关注 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 会自动为您 serializes/deserializes,因此您不需要额外的 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));
});