让我澄清一下,这有点复杂。 我正在实现一个表单在数据库中插入数据。同一客户端上的多个websockets连接 - 服务器无法处理
我在同一个客户端有两个websockets连接,连接在同一个nodejs服务器上。
用户在表单的“名称”文本字段上插入名称后触发一个连接。将数据发送到服务器,服务器检查数据库名称是否已经存在,并回应“这已经存在,可能你插入了已经存在的东西”。
如果表单的所有字段都不为空,并且将数据发送到服务器以将其插入到数据库中,则会触发其他连接。
我认为这是一个好主意,在服务器端区分使用数组的不同连接。如果数组的第一个元素是“name”,则调用checkName函数,或者如果是“insert”,则调用insertInDB函数。
我创建了两个小测试文件。他们不工作。连接打开并且客户端发送数据。我不会遇到任何错误inte服务器或客户端。但服务器从不响应。我没有得到预期的数字,回到了客户端。无论如何,我不认为这是正确的。这是complecated,我希望代码可以帮助你。
是否有可能,我正在尝试做什么?任何提示或替代?
感谢
代码....在服务器端我列出的会议,只与特定的会话沟通 服务器端
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>
,代码发现here 和服务器端(片段)
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]);
}
如果您拥有不同的用户角色并且某些角色不应提交访问权限,那么该怎么办?如果全部通过相同的套接字,则不能使用现有的基于路径的访问控制... – Gus