最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

nodejs+websocket完成一个聊天系统功能

来源:动视网 责编:小采 时间:2020-11-27 20:22:36
文档

nodejs+websocket完成一个聊天系统功能

nodejs+websocket完成一个聊天系统功能:这篇文章主要介绍了nodejs+websocket实时聊天系统的改进版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下本文属于nodejs+websocket实时聊天系统的改进版本,具体内容如下自己也是真的菜,一个websocket简单聊天系统硬被我搞了那么些天。看来以后还是得
推荐度:
导读nodejs+websocket完成一个聊天系统功能:这篇文章主要介绍了nodejs+websocket实时聊天系统的改进版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下本文属于nodejs+websocket实时聊天系统的改进版本,具体内容如下自己也是真的菜,一个websocket简单聊天系统硬被我搞了那么些天。看来以后还是得
 这篇文章主要介绍了nodejs+websocket实时聊天系统的改进版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文属于nodejs+websocket实时聊天系统的改进版本,具体内容如下

自己也是真的菜,一个websocket简单聊天系统硬被我搞了那么些天。

看来以后还是得写更多的代码。

client.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>
 <style>
 .kuang {
 width: 600px;
 min-height: 50px;
 max-height: 296px;
 border: 1px solid;
 float: left;
 display: block;
 position: relative;
 overflow-y: scroll;
 }

 .value {
 width: 200px;
 }

 .input {
 display: block;
 position: absolute;
 left: 0;
 margin-top: 300px;
 }
 </style>
</head>

<body>
 <label>连接用户:</label>
 <input type="text" id="name" />
 <button id="conn">连接</button>
 <button id="close">断开</button><br/><br/>
 <p class="kuang" id="mess"></p>
 <p class="input">
 <input type="text" class="value" id="value1" />
 <button id="send">发送</button>
 </p>
 <script>
 var input = document.getElementById("name");
 var conn = document.getElementById("conn");
 var close = document.getElementById("close");
 var mess = document.getElementById("mess");
 var value1 = document.getElementById("value1");
 var pattern = /^[\u4e00-\u9fa5]{2,10}$/;

 close.disabled = true;
 if (window.WebSocket) {
 conn.onclick = function () {
 if (!pattern.test(input.value)) {
 alert("名称不能为空且必须为中文");
 return;
 }
 var ws = new WebSocket('ws://127.0.0.1:8082');
 conn.disabled = true;
 close.disabled = false;
 ws.onopen = function (e) {
 console.log("连接服务器成功");
 ws.send(input.value);
 input.setAttribute("readOnly", 'true');
 value1.setAttribute("readOnly", 'true');
 }
 ws.onmessage = function (e) {
 value1.removeAttribute("readOnly");
 var time = new Date();
 mess.innerHTML += time.toUTCString() + ":" + e.data + "<br>";
 document.getElementById("send").onclick = function (e) {
 ws.send(input.value + "说:" + value1.value);
 value1.value = " ";
 }
 document.onkeydown = function (e) {
 e = e || window.event;
 if (e.keyCode == 13) {
 document.getElementById("send").onclick();
 return false;
 }
 }
 }
 ws.onclose = function (e) {
 console.log("服务器关闭");
 }
 ws.onerror = function () {
 console.log("连接出错");
 }
 /**
 * 客户端主动断开连接
 * 
 * **/
 close.onclick = function () {
 ws.onclose();
 ws.send(input.value + 'close' + "了连接");
 input.removeAttribute("readOnly");
 conn.disabled = false;
 close.disabled = true;
 }

 }

 }
 </script>
</body>

</html>

只能说界面丑陋忽略它。
server.js:

简单的截图说明一下:

开启服务,相同页面执行两遍,就可以聊天啦。反正过程就是这样。就是还有一个大的问题。比如我a断开连接了,只有b一个人在连接巨人b还能发信息,可以发信息算可以吧。居然b自己接收自己的信息。那就不能忍了。

就是这种呀,逻辑都错乱了,理清逻辑是个费脑子的事情。有知道的同学吗?怎么处理呀

【相关推荐】

1. Javascript免费视频教程

2. Js完成倒计时时差效果

3. 关于JS中递归删除数组中元素的方法详解

4. JS完成星级评分功能的实例详解

5. Js完成倒计时时差效果

文档

nodejs+websocket完成一个聊天系统功能

nodejs+websocket完成一个聊天系统功能:这篇文章主要介绍了nodejs+websocket实时聊天系统的改进版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下本文属于nodejs+websocket实时聊天系统的改进版本,具体内容如下自己也是真的菜,一个websocket简单聊天系统硬被我搞了那么些天。看来以后还是得
推荐度:
标签: 功能 聊天室 we
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top