node.js - socketio广播消息只发送给一个

标签 node.js socket.io

我正在使用 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/

相关文章:

javascript - 追踪 React.js 中的错误原因

json - 在 NodeJs 中读取 JSON 文件

node.js - Node 中的global和GLOBAL有什么区别

node.js - 如何使用node js获取上传视频的cloudinary url???

node.js - 让socket和http服务器监听同一个端口

javascript - Socket.io : "Cannot read property ' emit' of undefined"

javascript - Socket.io 中的 `.acks` key 是什么

javascript - Node.js 中基于好友的系统

node.js - Express,为每个用户保留变量

javascript - Socket IO Swift 客户端发送带有 ACK 的消息