nodejs 使用nodejs-websocket模块实现点对点实时通讯


Posted in NodeJs onNovember 28, 2018

1、首先安装好nodejs-websocket

npm install nodejs-websocket --save -g

2、编写服务端

var ws = require("nodejs-websocket")
var AllUserData = new Array()
// Scream server example: "hi" -> "HI!!!"
var server = ws.createServer(function (conn) {
  console.log("New connection")
  conn.on("text", function (str) {
    console.log("Received "+str)
    AllUserData.push({
      'id':str,
      'ws':conn
    })
    conn.sendText(str.toUpperCase()+"!!!")
  })
  conn.on("close", function (code, reason) {
    console.log("Connection closed")
    // 当用户退出的时候捕捉到退出的用户
    for (var i=0 in AllUserData) {
      if (AllUserData[i].ws == conn) {
        console.log(AllUserData[i])
      }
    }
  })
}).listen(8001)

3、简易客户端

<!DOCTYPE html>
<html>
<head>
  <title>django-websocket</title>
  <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
  <script type="text/javascript">//<![CDATA[
  $(function () {
    $('#connect_websocket').click(function () {
      if (window.s) {
        window.s.close()
      }
      /*创建socket连接*/
      var socket = new WebSocket("ws://127.0.0.1:8001");
      socket.onopen = function () {
        console.log('WebSocket open');//成功连接上Websocket
      };
      socket.onmessage = function (e) {
        console.log('message: ' + e.data);//打印出服务端返回过来的数据
        $('#messagecontainer').prepend('<p>' + e.data + '</p>');
      };
      // Call onopen directly if socket is already open
      if (socket.readyState == WebSocket.OPEN) socket.onopen();
      window.s = socket;
    });
    $('#send_message').click(function () {
      //如果未连接到websocket
      if (!window.s) {
        alert("websocket未连接.");
      } else {
        window.s.send($('#message').val());//通过websocket发送数据
      }
    });
    $('#close_websocket').click(function () {
      if (window.s) {
        window.s.close();//关闭websocket
        console.log('websocket已关闭');
      }
    });
  });
  //]]></script>
</head>
<body>
<br>
<input type="text" id="message" value="user1"/>
<button type="button" id="connect_websocket">连接 websocket</button>
<button type="button" id="send_message">发送 message</button>
<button type="button" id="close_websocket">关闭 websocket</button>
<h1>Received Messages</h1>
<div id="messagecontainer">
</div>
</body>
</html>

总结

以上所述是小编给大家介绍的nodejs 使用nodejs-websocket模块实现点对点实时通讯,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

NodeJs 相关文章推荐
nodejs中转换URL字符串与查询字符串详解
Nov 26 NodeJs
NodeJS Web应用监听sock文件实例
Feb 18 NodeJs
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
NodeJs读取JSON文件格式化时的注意事项
Sep 25 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
nodejs+express搭建多人聊天室步骤
Feb 12 NodeJs
nodejs 十六进制字符串型数据与btye型数据相互转换
Jul 30 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 NodeJs
深入理解nodejs搭建静态服务器(实现命令行)
Feb 05 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 #NodeJs
详解从NodeJS搭建中间层再谈前后端分离
Nov 13 #NodeJs
手把手教你如何使用nodejs编写cli命令行
Nov 05 #NodeJs
基于nodejs的雪碧图制作工具的示例代码
Nov 05 #NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 #NodeJs
nodejs中函数的调用实例详解
Oct 31 #NodeJs
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
Oct 17 #NodeJs
You might like
php实现用于计算执行时间的类实例
2015/04/18 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
php 输出缓冲 Output Control用法实例详解
2020/03/03 PHP
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
jQuery的slideToggle方法实例
2013/05/07 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
解析Javascript单例模式概念与实例
2016/12/05 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
python矩阵转换为一维数组的实例
2018/06/05 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
python打印文件的前几行或最后几行教程
2020/02/13 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
财务管理专业应届毕业生求职信
2013/09/22 职场文书
小学教师自我鉴定范文
2014/03/20 职场文书
创先争优公开承诺书
2014/08/30 职场文书
心得体会的写法
2014/09/05 职场文书
离职证明范本
2015/06/12 职场文书
行政处罚事先告知书
2015/07/01 职场文书
Python Django ORM连表正反操作技巧
2021/06/13 Python
我收到了德劲DE1107
2022/04/05 无线电