使用者 ID 傳送訊息的簡單方法
在伺服器上:
var express = require('express');
var socketio = require('socket.io');
var app = express();
var server = http.createServer(app);
var io = socketio(server);
io.on('connect', function (socket) {
socket.on('userConnected', socket.join);
socket.on('userDisconnected', socket.leave);
});
function message (userId, event, data) {
io.sockets.to(userId).emit(event, data);
}
在客戶端:
var socket = io('http://localhost:9000'); // Server endpoint
socket.on('connect', connectUser);
socket.on('message', function (data) {
console.log(data);
});
function connectUser () { // Called whenever a user signs in
var userId = ... // Retrieve userId
if (!userId) return;
socket.emit('userConnected', userId);
}
function disconnectUser () { // Called whenever a user signs out
var userId = ... // Retrieve userId
if (!userId) return;
socket.emit('userDisconnected', userId);
}
此方法允許通過唯一 ID 向特定使用者傳送訊息,而無需保留對伺服器上所有套接字的引用。