提问者:小点点

为什么不发送数据io.sockets.emit和socket.broadcast.emit


尝试了不同的方法,但数据最多发送到一个或两个客户端。如何将数据发送到连接到服务器的所有客户端?我做错了什么?

server.js:


    var PORT = 3000;

    var options = {
        // 'log level': 0
    };

    var express = require('express');
    var app = express();
    var http = require('http');
    var server = http.createServer(app);
    var io = require('socket.io').listen(server, options);
    server.listen(PORT);

    app.get('/', function (req, res) {
      res.sendfile(__dirname + '/attantions/templates/.default/template.php');
    });

    io.sockets.on('connection', function (client) {
      client.on('attantion', function (data) {
        try {
          // Tried so
          io.sockets.volatile.emit('attantion', data);
          // And tried so
          io.sockets.emit('attantion', data);
          client.emit('attantion', data);
          client.broadcast.emit('attantion', data );
        } catch (e) {
          console.log(e);
          client.disconnect();
        }
      });
    });

client.js:


    socket.emit("attantion", data);
    socket.on('attantion', function (data) {
      pushData(data);
    });


共1个答案

匿名用户

有关socket.io消息的不同选项,请参阅本文

将响应发送到除发送方(socket.io)以外的所有客户端

io.sockets.on('connection', function (client) {
  client.on('attantion', function (data) {
    //client.emit('attantion', data ); // This will send it to only the client 
    //client.broadcast.emit('attantion', data); // This will send it to everyone but this client
    io.emit('attantion', data);  // This will send it to all attached sockets. 

  });
});

编辑

不知道这个帖子能不能帮到你?

socket.io-无法加载文件

我很好奇通过node.js向客户端发送php文件是如何工作的?您正在使用另一个框架吗?

你能更多地展示你的客户端代码吗?加载lib和套接字的实例化。