我正在使用 socketio 构建游戏。
服务器存储玩家人数,当人数达到2时,游戏开始。
但是,当我逐个打开两个浏览器时,只有第一个(不是后一个)收到游戏开始消息。
客户端:
var socket = io.connect('http://localhost:8080');
socket.on('connected', function (data) {
$('#status').html('You are connected');
socket.emit('1 party connected');
});
socket.on('game start', function (data) {
$('#status').html('game start');
});
服务器端:
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')
app.listen(8080);
var connected_parties_no = 0;
io.sockets.on('connection', function (socket) {
socket.emit('connected', { hello: 'world' });
socket.on('1 party connected', function () {
connected_parties_no++;
console.log(connected_parties_no.toString()+' parties are connecting.');
if (connected_parties_no == 2) {
game_start(socket);
}
});
socket.on('disconnect', function () {
connected_parties_no--;
});
});
function game_start(socket) {
socket.broadcast.emit('game start');
}
最佳答案
socket.broadcast.emit('game start');
将把'游戏开始'
事件发送给每个人除了 `socket.您很可能正在寻找
io.sockets.emit('game start');
关于node.js - socketio广播消息只发送给一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16503421/