簡體   English   中英

如何從 javascript 代碼向所有使用 socket.io 連接的用戶發出結果

[英]How to emit a result from javascript code to all users connected using socket.io

我在網上看到了這個 js 代碼,我盡我所知修改了它,使其不僅對當前用戶可見,而且對所有用戶可見:

 var textarea = $('#textarea'); var typingStatus = document.querySelector('#typing_on'); var lastTypedTime = new Date(0); // it's 01/01/1970 var typingDelayMillis = 2000; // how long user can "think about his spelling" before we show "No one is typing -blank space." message function refreshTypingStatus() { if (!textarea.is(':focus') || textarea.val() == '' || new Date().getTime() - lastTypedTime.getTime() > typingDelayMillis) { socket.emit('stat', typingStatus.innerHTML = 'no type'); } else { socket.emit('stat', typingStatus.innerHTML = 'User typing....'); } } function updateLastTypedTime() { lastTypedTime = new Date(); } setInterval(refreshTypingStatus, 100); textarea.keypress(updateLastTypedTime); textarea.blur(refreshTypingStatus);
 <!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" type="text/css" href="styles.css"> <link rel="stylesheet" type="text/css" href="styles2.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> </head> <body> <input name="textarea" id="textarea" cols="45" rows="5"> <div id="typing_on"></div> </body>

我在前端所做的是將 socket.emit 添加到結果中,如上所示,我在后端(server.js)中所做的等效於

但它不起作用並顯示如下:

在此處輸入圖片說明

我想要的是“用戶輸入”出現在雙方(客戶)中,我該怎么做?

要將消息從客戶端發送到服務器,然后將消息發送到連接到 websocket 的所有客戶端:

服務器.js

io.on('connect', socket => {
  let counter = 0;
  setInterval(() => {
    socket.emit('hello', ++counter);
  }, 1000);
});

索引.html

const socket = io();

socket.on('connect', () => {
  $events.appendChild(newItem('connect'));
});

socket.on('hello', (counter) => {
  $events.appendChild(newItem(`hello - ${counter}`));
});

如果要將消息發送給除發送消息的人之外的所有客戶端,請使用廣播而不是發出

暫無
暫無

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

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