【问题标题】:Socket.io client won't display to all usersSocket.io 客户端不会显示给所有用户
【发布时间】:2021-07-10 23:02:35
【问题描述】:
document.addEventListener('DOMContentLoaded', () => {
    var socket = io.connect(location.protocol + '//' + document.domain + ':' + location.port);



    socket.on('message', data => {
        const p = document.createElement('p');
        const span_username = document.createElement('span');
        const span_timestamp = document.createElement('span');
        const br = document.createElement('br');
        span_username.innerHTML = data.username;
        span_timestamp.innerHTML = data.time_stamp;
        p.innerHTML = span_username.outerHTML + br.outerHTML +  data.msg 
        + br.outerHTML + span_timestamp.outerHTML;  
        document.querySelector('#display-message-section').append(p);
    });

    // Send message
    document.querySelector("#send_message").onclick = () => {
        socket.send({'msg':document.querySelector('#user_message').value, 
        'username': username});
    } 

});

这是我的完整客户端。我想让它向所有用户显示所有已发送的消息,包括我自己。当我打开另一个选项卡然后输入内容时,第一种类型不会显示我的第二个选项卡发送的内容。它在服务器中发送,但在浏览器中不显示。

@socketio.on('message')
def message(data):
  print(f"\n\n{data}\n\n")
  send({'msg': data['msg'], 'username': data['username'], 'time_stamp':strftime('%b-%d %I:%M%p', localtime())})

这是我最小的服务器。

【问题讨论】:

    标签: python browser server socket.io client


    【解决方案1】:

    尝试将broadcast=True 添加到您发送的参数中。默认情况下,socketio 只会向 socket 函数的原始调用者发出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-19
      • 2017-08-17
      • 2011-11-13
      • 2013-06-26
      • 2012-09-10
      • 2017-05-04
      • 2016-10-01
      • 2016-12-22
      相关资源
      最近更新 更多