私は以下のWebsocketクライアントコードを持っています。私は自分のサーバーにnodeJSを使用しています。しかし、このクライアントコードを使用すると接続が閉じられます。私は何が欠けているのか分かりません。サーバーを書くためにwsやexpress frameworkを使うことは必須ですか?可能であれば、これらのフレームワークを使用せずに書きたいと思います。Websockets - ノードフレームワークなしでサーバを書く方法
// Let us open a web socket
var ws = new WebSocket("ws://server.domain.com:8080/pa");
ws.onopen = function()
{
// Web Socket is connected, send data using send()
ws.send("Message to send");
alert("Message is sent...");
};
ws.onmessage = function (evt)
{
var received_msg = evt.data;
alert("Message is received...");
};
ws.onclose = function()
{
// websocket is closed.
alert("Connection is closed...");
};
Server.js
var http = require('http');
http.createServer(function(request, response) {
request.on('error', function(err) {
console.error(err);
response.statusCode = 400;
response.end();
});
response.on('error', function(err) {
console.error(err);
});
response.writeHead(200, {'Content-Type': 'application/json'});
var body=[];
if (request.method === 'GET' && request.url === '/pa') {
response.end(JSON.stringify({"action": "pa"}));
}
else if (request.method === 'GET' && request.url === '/pi') {
response.end(JSON.stringify({"action": "pi"}));
}
else {
response.statusCode = 404;
response.end();
}
}).listen(8080);
私はjavascriptを使用して、ソケットをアクティブにしてリクエストを受け取るためにサーバー上のポートを開くことができないと考えています。したがって、node.jsなどのコンテナが必要です。たぶんwebsocketの代わりにAPIを使うのが一番です。 –
上記のserver.jsだけを使用すると、node.serverがノードサーバーによってオープンされたソケットに接続するにはどうすればいいですか?私はsocket.ioのようなノードパッケージを使わずにそれをやりたいと思った。 – Jake
私はJavaScriptだけがポートをリッスンできないことを知っているので、アプリケーションのサーバーとして機能する。したがって、クライアントとサーバーのアプリケーションを持つという考え方では、通信とプロトコルの手段が必要です。この「サーバー」にアクセスする方法は、物理ポート(IP)によって、アプリケーションがある特定のポートで直接行われます。 Javascriptだけでは、サードパーティがそのサポート用に作成したコンテナを使用せずに接続するために、マシン上のポートを単独で開くことはできません。ソケットの考え方は、単にクライアントとサーバーを接続できることです。 –