Websocket-node-聊天思路

简介: 最近在梳理知识体系,看到Websocket,想起以前自己做呼叫中心,电话条相关业务用的也是socket,IM即时通讯用的比较多,就想做个聊天的雏形

1.前言 what how


最近在梳理知识体系,看到Websocket,想起以前自己做呼叫中心,电话条相关业务用的也是socket,IM即时通讯用的比较多,就想做个聊天的雏形

http

HTTP 协议有一个缺陷:短连接,通信只能由客户端发起

也就是说:只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息

http想要获取服务器连续状态的变化就非常麻烦,通常就是轮询:每隔一段时间,发出一个询问,就是请求,其实之前做的电话条业务,在线,忙碌等状态最初也是轮询获取

效率太低,非常浪费资源

Websocket

服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。


2.客户端代码


<input type="text" placeholder="请输入聊天内容" id="msgInput">
<button onclick="sendMsg()">发送</button>
<ul id="msgUl"></ul>
 <script>
        //1. 客户端发起请求  协议://ip:端口
        //    localhost  就是 127.0.0.1 本机
        var clientWS = new WebSocket("ws://localhost:3000")
        //  2. 监听服务是否建立 链接成功
        clientWS.onopen = function () {
            console.log("链接成功");
        }
        // 3. 监听服务端 是否给消息
        clientWS.onmessage = function (e) {
            console.log("服务端发来的消息:", e.data);
            showMsg("TA:"+e.data)
        }
        // 4.监听是否关闭
        clientWS.onclose = function () {
            console.log("服务已断开");
        }
        // 5.  客户端向服务端发送消息
        function sendMsg(){
            clientWS.send(inpuMsg.value)
            showMsg("我:"+inpuMsg.value)
            inpuMsg.value = ""
        }
        function showMsg(msg){
            let li = document.createElement("li")
            li.innerHTML = msg
            msgUl.appendChild(li)
        }
    </script>



3.服务端代码


const readline = require('readline');
var ws = require('ws')
wss = new ws.Server({ port: 3000 },function(){
console.log("3000 server  start")
});//服务端口3000
wss.on('connection', function (ws) {
    console.log('服务端:客户端已连接');
    ws.on('message', function (message) {
        console.log("服务端接收客户端的消息:", message);
        //创建readline接口实例
        const rl = readline.createInterface({
            input: process.stdin, //设置标准的输入流
            output: process.stdout //设置标准输出流
        });
        rl.question('请输入: ', function (answer) {
            ws.send(answer)
            // 不加close,则不会结束
            rl.close();
        });
    });
});



4.无界面哈哈

GI5VH6GOX481I4]5YKYKP2U.png

极简吧😆😆



5. 哈哈 闲来无事又加了简单的聊天记录显示


代码已经更新了其实很简单

聊天记录大型社 si  现场 哈哈

7HNZ7$8ZU]6JG$G%FC6Q9HD.png

                               1.png


相关文章
|
1月前
使用uniapp实现websocket聊天功能
使用uniapp实现websocket聊天功能
|
8月前
|
Python
PyQt5链接WebSocket,可以实现简易QQ聊天
PyQt5链接WebSocket,可以实现简易QQ聊天
127 0
|
1月前
|
存储 监控 JavaScript
使用Node.js构建实时聊天应用的技术指南
【5月更文挑战第12天】本文指导使用Node.js、Express.js和Socket.IO构建实时聊天应用。技术栈包括Node.js作为服务器环境、WebSocket协议、Express.js作为Web框架和Socket.IO处理实时通信。步骤包括项目初始化、安装依赖、搭建服务器、实现实时聊天功能、运行应用以及后续的完善和部署建议。通过这个指南,读者可以学习到创建简单实时聊天应用的基本流程。
|
1月前
|
前端开发
t-io websocket的聊天功能学习记录(二)
t-io websocket的聊天功能学习记录(二)
18 0
|
1月前
t-io websocket的聊天功能学习记录(一)
t-io websocket的聊天功能学习记录(一)
25 0
|
1月前
|
资源调度 JavaScript 前端开发
❤Nodejs 第十五章(简单websocket聊天实现)
【4月更文挑战第15天】本文介绍了在Node.js中实现简单WebSocket聊天的过程。首先通过`yarn`创建项目并安装`ws`和`express`依赖。接着,编写`WebSocketServer.js`建立WebSocket服务器,处理客户端连接、消息收发及错误。然后,用`server.js`创建一个静态文件服务器,提供`index.html`。`index.html`包含客户端的WebSocket连接和消息处理。启动两个服务器后,可以在浏览器中打开`index.html`进行聊天。最后,讨论了在Node.js 20+Vite环境下使用WebSocket时可能遇到的问题
30 0
|
10月前
|
Java
基于Tomcate、java、websocket 简单在线聊天
基于Tomcate、java、websocket 简单在线聊天
89 0
|
11月前
|
移动开发 监控 网络协议
基于Socket通讯(C#)和WebSocket协议(net)编写的两种聊天功能(文末附源码下载地址)
基于Socket通讯(C#)和WebSocket协议(net)编写的两种聊天功能(文末附源码下载地址)
|
10月前
|
存储 JavaScript 前端开发
SpringBoot集成WebSocket实现及时通讯聊天功能!!!
SpringBoot集成WebSocket实现及时通讯聊天功能!!!
276 0
|
10月前
|
开发框架 JavaScript 前端开发
如何使用SpringBoot和Netty实现一个WebSocket服务器,并配合Vue前端实现聊天功能?
如何使用SpringBoot和Netty实现一个WebSocket服务器,并配合Vue前端实现聊天功能?
227 0