Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.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
Html 同一客户端-服务器上的多个WebSocket连接无法处理_Html_Node.js_Websocket - Fatal编程技术网

Html 同一客户端-服务器上的多个WebSocket连接无法处理

Html 同一客户端-服务器上的多个WebSocket连接无法处理,html,node.js,websocket,Html,Node.js,Websocket,让我澄清一下,这有点复杂。 我正在实现一个表单来在数据库中插入数据 我在同一客户端有两个WebSocket连接,连接在同一个nodejs服务器上 用户在表单的“name”文本字段中插入名称后,会触发一个连接。将数据发送到服务器,服务器检查数据库名称是否已存在,并返回“此名称已存在。可能您正在插入已存在的内容” 如果表单的所有字段都不是空的,则会触发另一个连接,并将数据发送到服务器以将其插入数据库 我认为在服务器端区分使用阵列的不同连接是个好主意。如果数组的第一个元素是“name”,则调用chec

让我澄清一下,这有点复杂。 我正在实现一个表单来在数据库中插入数据

我在同一客户端有两个WebSocket连接,连接在同一个nodejs服务器上

用户在表单的“name”文本字段中插入名称后,会触发一个连接。将数据发送到服务器,服务器检查数据库名称是否已存在,并返回“此名称已存在。可能您正在插入已存在的内容”

如果表单的所有字段都不是空的,则会触发另一个连接,并将数据发送到服务器以将其插入数据库

我认为在服务器端区分使用阵列的不同连接是个好主意。如果数组的第一个元素是“name”,则调用checkName函数,或者如果它是“insert”,则调用insertInDB函数

我创建了两个小的测试文件。它们不起作用。连接打开,客户端发送数据。我在服务器端和客户端都没有收到错误。但服务器从未响应。我没有得到预期的数字,回到客户端。无论如何,我认为这是不对的。这是复杂的,我希望代码帮助你

有没有可能,我想做什么?有什么提示或选择吗

谢谢

代码。。。。 服务器端

function WebSocketTest1(){
 var a=1;
 var b=2;
 var c = [a,b];

     var so = new WebSocket("ws://localhost:1337");

      so.onerror=function (evt) 
     {message.textContent = evt;}

     so.onopen = function(){
      message.textContent = "opened";
     so.send(c);
      message.textContent = "sended";
     }


     so.onmessage = function (evt) { 
        var received_msg = evt.data;
       document.getElementById("message").innerHTML=received_msg;
     }
}

function WebSocketTest2(){
 var d=3;
 var e=4;
 var f = [d,e];

     var sa = new WebSocket("ws://localhost:1337");

      sa.onerror=function (evt) 
     {message2.textContent = evt;}


     sa.onopen = function(){
     message2.textContent = "opened";
     sa.send(f);
     message2.textContent = "sended";
     }


     sa.onmessage = function (evt) {
         var received_msg = evt.data;
         document.getElementById("message2").innerHTML=received_msg;
}
}
</script>
</head>
 <input type="button" value="one" onClick="WebSocketTest1()"><br/>
  <input type="button" value="two" onClick="WebSocketTest2()"><br/>
<body>
  <div id="message"></div>
mesage2</br>
    <div id="message2"></div>
</body>
</html>

我只是想知道你为什么需要websocket。似乎需要验证应用程序中的用户存在。如果用户不存在,则需要在数据库中插入,否则将抛出错误

您可以通过jquery post和jquery表单验证
我只是想知道你为什么需要websocket。似乎需要验证应用程序中的用户存在。如果用户不存在,则需要在数据库中插入,否则将抛出错误

您可以通过jquery post和jquery表单验证
我想知道你为什么需要两个连接。 打开一个连接并将负载作为JSON发送

e、 g


在服务器端,您只需解析负载并确定执行哪个命令。

我想知道为什么需要2个连接。 打开一个连接并将负载作为JSON发送

e、 g


在服务器端,您只需解析有效负载并确定执行哪个命令。

如果您有不同的用户角色,而某些角色不应具有提交权限,该怎么办?如果全部通过同一个套接字,则无法使用现有的基于路径的访问控制…如果您具有不同的用户角色,并且某些角色不应具有提交权限,则如何?如果全部通过同一个套接字,则无法使用现有的基于路径的访问控制。。。
    var connections = {};
    var connectionIDCounter = 0;
    var connection = request.accept(null, request.origin);

   // Store a reference to the connection using an incrementing ID
    connection.id = connectionIDCounter ++;
    connections[connection.id] = connection;


    console.log((new Date()) + ' Connection accepted.');

   connection.on('message', function(message) {             
   var ja=message;
   if(ja[0]==1)
  {ja[1]=7;}        

  else if(ja[0]==3)
  {ja[1]=8;}
   }); 



    connection.on('close', function(reasonCode, description) {
    console.log((new Date()) + ' Peer ' + connection.remoteAddress + ' disconnected.');
    delete connections[connection.id];
    });
   });

// Send a message to a connection by its connectionID
function sendToConnectionId(connectionID, data) {
    var connection = connections[connectionID];
    if (connection && connection.connected) {
        connection.send(ja[1]);   
    }
var ws = new WebSocket("ws://localhost:1336");
ws.send(JSON.stringify({ command: "checkname", params: "xxxx"; });
ws.send(JSON.stringify({ command: "submit", params: { ... });