源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

nodejs实现的一个简单聊天室功能分享

  • 时间:2020-12-29 16:30 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:nodejs实现的一个简单聊天室功能分享
今天我来实现一个简单的聊天室,后台用nodejs, 客户端与服务端通信用socket.io,这是一个比较成熟的websocket框架. [b]初始工作[/b] 1.安装express, 用这个来托管socket.io,以及静态页面,命令npm install express --save,--save可以使包添加到package.json文件里. 2.安装socket.io,命令npm install socket.io --save. [b]编写服务端代码[/b] 首先我们通过express来托管网站,并附加到socket.io实例里,因为socket.io初次连接需要http协议
[url=css/reset.css]     <link rel="stylesheet" href="css/bootstrap.css"/>     <link rel="stylesheet" href="css/app.css"/> </head> <body>     <div class="wrapper">          <div class="content" id="chat">              <ul id="chat_conatiner">              </ul>          </div>          <div class="action">              <textarea ></textarea>              <button class="btn btn-success" id="clear">清屏</button>              <button class="btn btn-success" id="send">发送</button>          </div>     </div>     <script type="text/javascript" src="js/socket.io.js"></script>     <script type="text/javascript">           var ws = io.connect('http://172.16.2.184:8888');           var sendMsg = function(msg){               ws.emit('send.message', msg);           }           var addMessage = function(from, msg){               var li = document.createElement('li');               li.innerHTML = '<span>' + from + '</span>' + ' : ' + msg;               document.querySelector('#chat_conatiner').appendChild(li);               // 设置内容区的滚动条到底部               document.querySelector('#chat').scrollTop = document.querySelector('#chat').scrollHeight;               // 并设置焦点               document.querySelector('textarea').focus();           }           var send = function(){               var ele_msg = document.querySelector('textarea');               var msg = ele_msg.value.replace('\r\n', '').trim();               console.log(msg);               if(!msg) return;               sendMsg(msg);               // 添加消息到自己的内容区               addMessage('你', msg);               ele_msg.value = '';           }           ws.on('connect', function(){               var nickname = window.prompt('输入你的昵称!');               while(!nickname){                   nickname = window.prompt('昵称不能为空,请重新输入!')               }               ws.emit('join', nickname);           });           // 昵称有重复           ws.on('nickname', function(){               var nickname = window.prompt('昵称有重复,请重新输入!');               while(!nickname){                   nickname = window.prompt('昵称不能为空,请重新输入!')               }               ws.emit('join', nickname);           });           ws.on('send.message', function(from, msg){               addMessage(from, msg);           });           ws.on('announcement', function(from, msg){               addMessage(from, msg);           });           document.querySelector('textarea').addEventListener('keypress', function(event){               if(event.which == 13){                   send();               }           });           document.querySelector('textarea').addEventListener('keydown', function(event){               if(event.which == 13){                   send();               }           });           document.querySelector('#send').addEventListener('click', function(){               send();           });           document.querySelector('#clear').addEventListener('click', function(){               document.querySelector('#chat_conatiner').innerHTML = '';           });     </script> </body> </html>
这里提供完整的代码压缩文件[/url] [b]总结[/b] nodejs是一个好东西,尤其是在处理消息通讯,网络编程方面,天生的异步IO.
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部