是否可以在一个HTML中创建多个websocket客户端?

时间:2019-06-18 15:10:39

标签: javascript websocket

这是我创建多websocket连接的代码:

<!DOCTYPE HTML>
<html>
<head>
   <meta charset="utf-8">
   <title>runoob.com</title>
   <script type="text/javascript">
      function WebSocketTest() {
         if ("WebSocket" in window) {
            for (let i = 0; i < 300; i++) {
               // open web socket
               new WebSocket("ws://localhost:8070");
               console.log("open" + i + "websocket");
            }
         }
      }
   </script>
</head>

<body>
   <div id="sse">
      <a href="javascript:WebSocketTest()">Run WebSocket</a>
   </div>
</body>
</html>

现在我想从服务器接收消息,如何编写代码?这样的代码可能共享ws变量,因此无法正常工作。

<!DOCTYPE HTML>
<html>
<head>
   <meta charset="utf-8">
   <title>runoob.com</title>
   <script type="text/javascript">
      function WebSocketTest() {
         if ("WebSocket" in window) {
            for (let i = 0; i < 300; i++) {
               // open web socket
               var ws = new WebSocket("ws://localhost:8070");
               console.log("open" + i + "websocket");

               ws.onmessage = function (evt) 
               { 
                 var received_msg = evt.data;
               };
            }
         }
      }
   </script>
</head>

<body>
   <div id="sse">
      <a href="javascript:WebSocketTest()">Run WebSocket</a>
   </div>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

这样编写代码,但是Chrome在我的测试中将websocket连接限制为少于250个:

      function newcon(i) {
         var ws = new WebSocket("wss://ws.example.com");
         console.log("open" + i + "websocket");
         ws.onopen = function () {
            ws.send("client " + i + " send message");
         };

         ws.onmessage = function (evt) {
            var received_msg = evt.data;
         };

         ws.onclose = function () {
            console.log("closed");
         };
      }

调用功能:

     function WebSocketTest() {
         if ("WebSocket" in window) {
            for (let i = 0; i < 2; i++) {
               newcon(i);
            }
         }
      }