はっきりさせておきますが、これはちょっと複雑です。データベースにデータを挿入するフォームを実装しています。
同じクライアント側に2つのWebソケット接続があり、同じnodejsサーバーに接続しています。
ユーザーがフォームの「名前」テキストフィールドに名前を挿入すると、1 つの接続がトリガーされます。データをサーバーに送信し、サーバーは名前が既に存在するかどうかをデータベースで確認し、「これは既に存在します。すでに存在するものを挿入している可能性があります」と応答します。
フォームのすべてのフィールドが空白ではなく、データをサーバーに送信してデータベースに挿入すると、もう 1 つの接続がトリガーされます。
配列を使用したさまざまな接続をサーバー側で区別することは良い考えだと思いました。配列の最初の要素が "name" の場合は checkName 関数を呼び出し、それが "insert" の場合は insertInDB 関数を呼び出します。
2 つの小さなテスト ファイルを作成しました。それらは機能しません。接続が開かれ、クライアントがデータを送信します。サーバー側でもクライアント側でもエラーは発生しません。しかし、サーバーは決して応答しません。クライアント側に戻って、期待される数値が得られません。とにかくこれが正しいとは思いません。これは複雑です。コードがお役に立てば幸いです。
私がやろうとしていることは可能ですか?ヒントや代替案はありますか?
ありがとう
コード....サーバー側
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>
サーバー側では、特定のセッションとのみ通信するためにセッションをリストしています。ここに あるコードとサーバー側 (スニペット)
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]);
}