1. 程式人生 > >HTML網頁+nodejs實現websocket

HTML網頁+nodejs實現websocket

本程式利用HTML5和nodejs中封裝好的websocketAPI實現了簡單的功能,作此筆記

功能簡單,就是向後臺傳送輸入框中的內容,然後後臺再把接收到的訊息傳回前端顯示出來,具體程式碼如下:

HTML網頁程式碼:

<!doctype html>
<html>
    <head>
        <meta charset='utf-8'>
        
    </head>
    <body>
        <button id='send'>傳送</button>
        <input type='text' id='inputText'>
        <p id='dispStatus'>正在連線...</p>
        <script>
                var inputText=document.getElementById('inputText');//讀輸入框的控制代碼
                var dispStatus=document.getElementById('dispStatus');//讀按鈕的控制代碼
                var ws=new WebSocket('ws://10.138.244.142:8000');//建立websocket連線,,服務端的IP+埠號
                ws.onopen=function(e){//開始建立連線時的事件,顯示連線成功
                    dispStatus.innerHTML='連線成功';
                }
                document.getElementById('send').onclick=function(e){//按鈕按下觸發事件,
                    ws.send(inputText.value);//按下按鈕向服務端傳送輸入框中的值
                }

                ws.onmessage=function(e){//讀取服務端接收到的資訊
                    dispStatus.innerHTML=e.data;//將資訊顯示出來
                }
            </script>
    </body>
</html>

nodejs後臺程式碼:
var ws=require("nodejs-websocket");//引入websocket模組
console.log("開始建立連線...");//後臺列印狀態資訊
var server=ws.createServer(function(connect){//建立一個新連線
    connect.on("text",function(msg){//接收觸發事件
        console.log("收到的訊息是:"+msg);//接收到新訊息之後在後臺打印出來
        if(msg){//如果訊息不是空,將接收到的訊息傳送給客戶端
            connect.send('接收到的訊息是:'+msg);
        }
    });
}).listen(8000)

在此過程中遇到的問題,HTML程式碼中<script>指令碼程式放在<head>中不能用,一直連線不上後臺,但是放在<body>中就可以,不知道為什麼