哥几个,咱们现在聊聊那个很牛逼的东西:使用NodeJS+WS(WebSocket)实现点对点和群组聊天功能。你们都准备好了没?
咱们别磨叽了,赶紧看问题!想学怎么用Node.js+ws插件搞定实时聊天和群聊的功能么?这事儿可大着,关系到你上网跟小伙伴们怎样嗨皮!你觉得重不重要?
我们来搞一下怎么整好这个事儿!主要环节你得用到 websocket,就像个中间的翻译,帮忙我们的聊天室有个能点对点或组队的方式进行对话。然后,就是那个叫 Clients 的小助手,负责记住这些链接。只要帮每个连接贴上标签,根据收到的消息找线索、挑重要的回复,这样就能确保咱们的对话随时都畅通无阻~
咱接着来聊聊下一个问题咋整。这次这个问题,也挺重要滴~就是怎么弄个HTML页面让大家在上面聊聊天啥的。想过这个问题没?
nbs.on("connection", (ws, req) => { ws.on("message", message => { // 这里解析数据 const result = JSON.parse(message); // 是否是登陆,登陆后绑定id if (result.login) { ws.socketIdxos = result.id; } else { // 这里只做一个小的场景,不是登陆就是发送信息 // 根据存储的id 是否是要 发送的对象 来单独响应 nbs.clients.forEach(s => { if (s.socketIdxos == result.to && s.readyState == 1) { s.send(JSON.stringify({ data: result.mes })); } }); } }); ws.on("close", message => { console.log(ws.socketIdxos,"退出连接"); }); });
咱来看下咋解决这问题!试试弄3页,模拟2人和1组的聊天情景。这样,在这几个界面里都能相互发送消息接收信息了,很酷炫的感觉!
咱们换到第三个话题这个挺关键滴~得琢磨怎么展示我们做了点啥,让所有人知道我们发什么讯息。你觉得这个问题重要吗?
BBB111 const ws = new WebSocket("ws://localhost:8181"); ws.onopen = function (e) { ws.send(JSON.stringify({ "id":"BBB111", "login":true, })); } function sendMessage() { ws.send(JSON.stringify({ "id":"BBB111", // 当前ID "login":false, // 是否登陆 "to":"AAA111", // 发送对象 "mes":"我是BBB111,这是发送给AAA111的消息" // 发送内容 })); } function sendYUYUYU() { ws.send(JSON.stringify({ "id":"BBB111", "login":false, "to":"YUYUYU", "mes":"我是BBB111,这是到群里的消息" })); } ws.onmessage = function (e) { console.log(e,"eeee-"); }
快来围观看看咋解决这个事儿。就是说说AAA和BBB他们发了啥。你知道吗,这在群里可都看得见哩!以后你们就可以随便瞅瞅别人发的啥,多方便~
群聊 const ws = new WebSocket("ws://localhost:8181"); ws.onopen = function (e) { // 这里主要作用就是注册下群成立了 ...... ws.send(JSON.stringify({ "id":"YUYUYU", "login":true, })); } ws.onmessage = function (e) { console.log(e,"eeee-"); }
搞定了!我们一起做出了个超酷的WebSocket,别忘了和大家分享这份学习的快乐!今天就先聊到这里,希望你们都喜欢今天的分享。有什么问题或者想法就留言和我们聊天!顺便给我们点个赞分享一下,让更多人体验到这个超棒的技术!谢谢你们的支持
const ws = new WebSocket("ws://localhost:8181"); localhost 可以换成的你的本机IP,这样页面在其他电脑也可以发送到你的页面上
原文链接:https://www.icz.com/technicalinformation/web3/2024/03/11458.html,转载请注明出处~~~
评论0