【问题标题】:Why does not sending data io.sockets.emit and socket.broadcast.emit为什么不发送数据 io.sockets.emit 和 socket.broadcast.emit
【发布时间】:2017-01-05 15:02:44
【问题描述】:

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

Server.js:

变量端口 = 3000; 变量选项 = { // '日志级别': 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('attention', function (data) { 尝试 { // 试过了 io.sockets.volatile.emit('attantion', data); // 并尝试过 io.sockets.emit('attantion', data); client.emit('attention', data); client.broadcast.emit('attantion', data ); } 抓住 (e) { 控制台.log(e); client.disconnect(); } }); });

Client.js:

socket.emit("attention", data); socket.on('attention', function (data) { 推送数据(数据); });

【问题讨论】:

    标签: node.js sockets socket.io


    【解决方案1】:

    有关 socket.io 消息的不同选项,请参阅此帖子

    Send response to all clients except sender (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 - Cannot load file

    我很好奇如何通过 node.js 将 php 文件发送到客户端?你在使用另一个框架吗?

    您能否展示更多您的客户端代码是什么样的?加载库和套接字的实例化。

    【讨论】:

    • 是的,我试过这个方法。刚试过 io.sockets.emit('attantion', data);它不起作用。
    • 你确定你有连接吗?
    • 是的,当我将日期推送到服务器时,我可以通过控制台日志看到。
    • 但是当我尝试在客户端的控制台日志中返回日期时,什么也没有
    猜你喜欢
    • 2021-11-20
    • 1970-01-01
    • 2023-03-25
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2021-02-11
    相关资源
    最近更新 更多