node.js实现WebSocket(包括连接停止后自动连接上)

服务端代码:

实现安装:nodejs-websocket模块

npm i nodejs-websocket -S

服务端代码如下:

var ws = require("nodejs-websocket");

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);

 客户端代码如下:

<!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://127.0.0.1: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>

客户端打开页面,点击“发送 ”按钮可以看到完整过程。

附:客户端的完整步骤

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <div>
        <input type="text" width="200" id="text-container" /><input type="button" value="Start" onclick="start()" />
    </div>
    <div id="messages"></div>
    <script type="text/javascript">
        var webSocket;

        function connect() {
            webSocket = new WebSocket('ws://localhost:9000');//建立通道  
        }

        connect();

        webSocket.onerror = function (event) {
            alert(event.data);
        };

        //与WebSocket建立连接  
        webSocket.onopen = function (event) {
            //向服务器发送请求  
            webSocket.send('我是jCuckoo');
            document.getElementById('messages').innerHTML = '与服务器端建立连接';
        };

        //处理服务器返回的信息  
        webSocket.onmessage = function (event) {
            document.getElementById('messages').innerHTML += '<br />' + event.data;
        };

        // 连接停止后自动连上
        webSocket.onclose = function(e){
            console.log('套接字已关闭。将在1秒后尝试重新连接。', e.reason);
            setTimeout(function(){
                connect();
            }, 1000)
        }

        function start() {
            webSocket.send(document.getElementById("text-container").value);
        } 
    </script>
</body>

</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现基于Node.jsWebSocket聊天室,可以使用nodejs-websocket和socket.io这两个模块。首先,需要在Node.js环境中安装这两个模块。 使用nodejs-websocket模块的实现示例如下所示: ```javascript var ws = require("nodejs-websocket"); var server = ws.createServer(function(conn){ conn.on("text", function(data){ // 处理客户端发送的消息 console.log("Received message from client: " + data); // 向所有连接的客户端广播消息 server.connections.forEach(function(connection){ connection.sendText(data); }); }); conn.on("close", function(code, reason){ // 处理客户端断开连接的事件 console.log("Client disconnected"); }); }).listen(8000); console.log("WebSocket server listening on port 8000"); ``` 而使用socket.io模块的实现示例如下所示: ```javascript var app = require("http").createServer(); var io = require("socket.io")(app); io.on("connection", function(socket){ socket.on("message", function(data){ // 处理客户端发送的消息 console.log("Received message from client: " + data); // 向<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [websocket简明教程(nodejs-websocket库、socket.io库实现Web聊天室)](https://blog.csdn.net/qq_32252957/article/details/88586497)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值