簡體   English   中英

使用socket.io無法在客戶端中接收廣播的事件

[英]Can't receive broadcasted event in client using socket.io

我正在嘗試在active.ejs上呈現一些數據,該數據具有監聽事件users的套接字。 事件users通過index.js廣播發送。

我在active.ejs套接字偵聽器函數中有一個console.log("do you go here") 但是,從來沒有記錄“你到這里”,在socket.on ,這樣在某種程度上是指所發出的廣播index.js沒有收到active.ejs 我如何獲得它呢?

index.js

var io = socket(server);
io.on('connection', function(socket){
  count++;
  socket.broadcast.emit('users', socket.handshake.query);
});

active.ejs

    ..html boilerplate
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="http://localhost:4000/socket.io/socket.io.js"></script>
  </head>
  <body>
    <p>
      Welcome,
      <%= user_info.uri %>
    </p>
    <div id="active"></div>
    <script>
    var socket = io.connect('http://localhost:4000/tune-in', {query: <%- JSON.stringify(user_info) %>});
    var active = document.getElementById('active');

    // Listening for events on socket
    socket.on('users', function(data){
      console.log('do you go here');
      active.innerHTML += "<p><em>" + data.display_name + " is connected" + "</em></p>";
    });
    </script>
  </body>
</html>

您的代碼socket.broadcast.emit('users', socket.handshake.query); 完全按照應有的方式-將事件發送給所有客戶端(除了剛剛連接的客戶端以外)。
您可能要改用io.emit('users', socket.handshake.query)

編輯:

將名稱空間添加到服務器:

var io = socket(server);
io.of('/tune-in').on('connection', function(socket){
  count++;
  socket.broadcast.emit('users', socket.handshake.query);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM