讓我澄清一下,這有點複雜。 我正在實現一個表單在數據庫中插入數據。同一客戶端上的多個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