簡體   English   中英

使用websockets和node.js的Web應用程序

[英]Web application using websockets and node.js

我是HTML5和node.js的新手。 我正在嘗試創建一個非常基本的客戶端服務器應用程序。 這是代碼。

服務器端(node.js):

var net = require('net');

var server = net.createServer(function(c) {

    console.log('client connected');
    c.setEncoding('utf8');

    c.on('end', function() {
        console.log('client disconnected');
    });

    c.on('data', function(data) {
        console.log(data);
        c.write("Got it");
    });

});

server.listen(9998);

客戶端(網絡套接字):

<!DOCTYPE html>

<html>
    <head>
        <script>

            try {

                var ws = new WebSocket('ws://127.0.0.1:9998');

                ws.onopen = function() {
                    ws.send("Message to send");
                    alert("Message is sent...");
                };

                ws.onmessage = function (evt) { 
                    var message = evt.data;
                    alert("Message is received: " + message);
                };

                ws.onclose = function() { 
                    alert("Connection is closed..."); 
                };

            } catch (err) {
                alert(err.message);
            }

        </script>
    </head>
    <body>
    </body>
</html>

據我了解,客戶端應連接到服務器,發送“要發送的消息”,服務器應回復“知道了”。 相反,服務器收到的是對客戶端html頁面的http GET請求,並且從未觸發任何客戶端回調。 我想念什么?

您缺少WebSocket的要點,即它的TCP而不是原始TCP,要建立連接,客戶端必須首先發送HTTP請求,然后服務器將協議切換到websockets,但是請記住websocket不是原始TCP,在其中有自定義標頭包等。

為了節省時間,請嘗試https://github.com/LearnBoost/Socket.IO/或其他websocket庫https://github.com/joyent/node/wiki/Modules

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM