0
我試圖呈現active.ejs
其中有一個套接字正在偵聽事件users
的一些數據。事件users
由index.js
作爲廣播發出。使用套接字無法在客戶端接收廣播事件
我有一個console.log("do you go here")
在我的套接字偵聽器功能active.ejs
。 然而,它從來沒有在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>
這正是我想要它做的,發送事件給所有客戶端,除了剛剛將一個。當我有兩個打開的瀏覽器,例如兩個連接的客戶端時,我希望每個人都用'id =「active」''''''div'將''另一個(但不是它自己)顯示爲'active'客戶端。但是,'socket.on'函數不會觸發。 – Kek