我有以下Websocket客戶端代碼。我正在爲我的服務器使用nodeJS。但是當我使用這個客戶端代碼時,我關閉了連接。我不知道我錯過了什麼。使用ws或express框架來編寫服務器是強制性的嗎?如果可能的話,我想寫一個不使用這些框架。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或其他的容器來執行這些操作。也許最好是使用API而不是websocket。 –
所以如果我只使用上面的server.js,我該如何編寫我的client.js來連接到由節點服務器打開的套接字?我想這樣做,而不使用任何節點包如socket.io – Jake
因此,我知道只有JavaScript不能監聽端口,作爲您的應用程序的服務器。因此,擁有客戶端和服務器應用程序的想法需要一種通信和協議,訪問此「服務器」的方式直接取決於其物理地址(IP),位於某個端口,即應用程序所在的位置。單獨使用Javascript無法在您的機器上打開端口供第三方連接到它,而無需使用用於支持的容器。套接字的想法是能夠將客戶端連接到服務器。 –