Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以在一个html中创建多个websocket客户端?_Javascript_Websocket - Fatal编程技术网

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

Javascript 是否可以在一个html中创建多个websocket客户端?,javascript,websocket,Javascript,Websocket,这是我创建多websocket连接的代码: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>runoob.com</title> <script type="text/javascript"> function WebSocketTest() { if ("WebSocket" in windo

这是我创建多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>

runoob.com
函数WebSocketTest(){
如果(“窗口中的WebSocket”){
for(设i=0;i<300;i++){
//开放式web套接字
新的WebSocket(“ws://localhost:8070”);
console.log(“打开”+i+“websocket”);
}
}
}
现在我想从服务器接收消息,如何编写代码?这样的代码可能共享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>

runoob.com
函数WebSocketTest(){
如果(“窗口中的WebSocket”){
for(设i=0;i<300;i++){
//开放式web套接字
var ws=newwebsocket(“ws://localhost:8070”);
console.log(“打开”+i+“websocket”);
ws.onmessage=函数(evt)
{ 
收到的var_msg=evt.data;
};
}
}
}

这样编写代码,但在我的测试中,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);
            }
         }
      }
函数WebSocketTest(){
如果(“窗口中的WebSocket”){
for(设i=0;i<2;i++){
纽康(一);
}
}
}

这样编写代码,但在我的测试中,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);
            }
         }
      }
函数WebSocketTest(){
如果(“窗口中的WebSocket”){
for(设i=0;i<2;i++){
纽康(一);
}
}
}

大多数浏览器都会阻止JavaScrip引擎以这种方式使用。他们将限制可用WebSocket连接的数量(上次我测试Chrome时限制为300个)。。。服务器可能会处理更多的WebSocket客户端,然后浏览器会愿意打开。@Myst也许,但您可以一次运行多个浏览器来使用更多的客户端clients@Dolphin“我正在测试服务器可以处理多少websocket连接”-这在应用程序中比在web浏览器中处理得更好。用任何语言编写一个程序,该程序有一个WebSocket库可供使用,然后您可以创建和管理任意数量的WebSocket客户端连接。@Myst“您真的可以打开更多浏览器来克服连接限制吗?”-为什么不可以?你为什么不这么想?它们只是TCP连接,就像其他连接一样。它们不受操作系统的限制,只受浏览器的限制。因此,如果浏览器将其创建的WebSocket客户端数量限制为(比如)每个进程300个,那么运行X个浏览器进程应该能够总共创建X*300个客户端,除非浏览器进程彼此对话以共享单个限制。但同时运行不同类型的浏览器很容易克服这个问题。@RemyLebeau,试试看。您会注意到浏览器通常是多进程的野兽,具有共享内存和IPC机制。他们可能比人们想象的更难孤立。更有可能的是,他们将在多个流程中实施相同的限制。但也许我错了。我只是觉得这并不像理论上说的那么简单。大多数浏览器都会阻止他们的JavaScrip引擎以这种方式使用。他们将限制可用WebSocket连接的数量(上次我测试Chrome时限制为300个)。。。服务器可能会处理更多的WebSocket客户端,然后浏览器会愿意打开。@Myst也许,但您可以一次运行多个浏览器来使用更多的客户端clients@Dolphin“我正在测试服务器可以处理多少websocket连接”-这在应用程序中比在web浏览器中处理得更好。用任何语言编写一个程序,该程序有一个WebSocket库可供使用,然后您可以创建和管理任意数量的WebSocket客户端连接。@Myst“您真的可以打开更多浏览器来克服连接限制吗?”-为什么不可以?你为什么不这么想?它们只是TCP连接,就像其他连接一样。它们不受操作系统的限制,只受浏览器的限制。因此,如果浏览器将其创建的WebSocket客户端数量限制为(比如)每个进程300个,那么运行X个浏览器进程应该能够总共创建X*300个客户端,除非浏览器进程彼此对话以共享单个限制。但同时运行不同类型的浏览器很容易克服这个问题。@RemyLebeau,试试看。您会注意到浏览器通常是多进程的野兽,具有共享内存和IPC机制。他们可能比人们想象的更难孤立。更有可能的是,他们将在多个流程中实施相同的限制。但也许我错了。我只是觉得这不像理论上说的那么容易。