[英]SocketIO - How to send data to a specific client
我在將數據發送到特定客戶端時遇到問題。
服務器端
var io = require('socket.io').listen(app.listen(app.get('port'))); io.sockets.on('connection', function (socket) { socket.on('onHabboConnection', function (data) { socket.id = data.id; socket.join(data.id); io.sockets.in(data.id).emit('onHabboConnected'); }); socket.on('onHabboConnected', function (data) { console.log("<" + socket.id + "> " + data.username + " has joined the game."); }); });
客戶端
var socket = io.connect('http://localhost:3000'); $( document ).ready(function() { socket.emit('onHabboConnection', { id:'<%= user.id %>' }); }); socket.on('onHabboConnected', function () { console.log("WORKING" ); socket.emit('onHabboConnected', { username: '<%= user.username %>'}); });
io.sockets.in(data.id).emit('onHabboConnected');
我已經嘗試了所有方法,但是它們都會引發錯誤。 這個不會拋出錯誤,但是什么也不會做!
您正在覆蓋在客戶端生成的唯一標識符socket.id
。 這就是為什么您要發出信號,但由於該客戶端不存在,它沒有任何作用:
socket.on('onHabboConnection', function (data) {
//socket.id = data.id; remove this
socket.join(data.id);
io.sockets.in(data.id).emit('onHabboConnected');
});
如果要更改socket.id
,請在客戶端進行更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.