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 相关文章推荐
windows下安装nodejs及框架express
Aug 07 NodeJs
Nodejs爬虫进阶教程之异步并发控制
Feb 15 NodeJs
nodejs微信公众号支付开发
Sep 19 NodeJs
Nodejs中解决cluster模块的多进程如何共享数据问题
Nov 10 NodeJs
NodeJs下的测试框架Mocha的简单介绍
Feb 22 NodeJs
详解nodejs微信公众号开发——1.接入微信公众号
Apr 10 NodeJs
ajax +NodeJS 实现图片上传实例
Jun 06 NodeJs
详解Nodejs之npm&amp;package.json
Jun 15 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
nodeJS模块简单用法示例
Apr 21 NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 NodeJs
nodejs+express最简易的连接数据库的方法
Dec 23 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
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
php根据生日计算年龄的方法
2015/07/13 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
2019/10/30 PHP
jQuery 验证插件 Web前端设计模式(asp.net)
2010/10/17 Javascript
在css加载完毕后自动判断页面是否加入css或js文件
2014/09/10 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
简介BootStrap model弹出框的使用
2016/04/27 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
Javascript读取上传文件内容/类型/字节数
2019/04/30 Javascript
浅谈MySQL中的触发器
2015/05/05 Python
用C++封装MySQL的API的教程
2015/05/06 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
python模块导入的方法
2019/10/24 Python
用什么库写 Python 命令行程序(示例代码详解)
2020/02/20 Python
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
庆元旦广播稿
2014/02/10 职场文书
护理专业自荐信范文
2014/02/26 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
小学学校门卫岗位职责
2014/08/03 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
党课心得体会范文
2014/09/09 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
交通事故被告代理词
2015/05/23 职场文书
党支部综合考察意见
2015/06/01 职场文书
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫