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、Python写的一个简易HTTP静态文件服务器
Jul 18 NodeJs
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
Sep 26 NodeJs
nodejs实现获取当前url地址及url各种参数值
Jun 25 NodeJs
NodeJs读取JSON文件格式化时的注意事项
Sep 25 NodeJs
nodejs基础应用
Feb 03 NodeJs
nodejs搭建本地服务器并访问文件的方法
Mar 03 NodeJs
Nodejs进阶之服务端字符编解码和乱码处理
Sep 04 NodeJs
nodejs 最新版安装npm 的使用详解
Jan 18 NodeJs
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
May 15 NodeJs
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
Oct 17 NodeJs
NodeJs入门教程之定时器和队列
Mar 08 NodeJs
nodejs对项目下所有空文件夹创建gitkeep的方法
Aug 02 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中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
php自动加载机制的深入分析
2013/06/08 PHP
PHP中使用imagick生成PSD文件缩略图教程
2015/01/26 PHP
php通过前序遍历树实现无需递归的无限极分类
2015/07/10 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
多浏览器兼容的获取元素和鼠标的位置的js代码
2009/12/15 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
[22:07]DOTA2-DPC中国联赛 正赛 iG vs Magma 选手采访
2021/03/11 DOTA
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
Python判断字符串与大小写转换
2015/06/08 Python
Python3字符串学习教程
2015/08/20 Python
详解python之配置日志的几种方式
2017/05/22 Python
python中列表和元组的区别
2017/12/18 Python
python 实现UTC时间加减的方法
2018/12/31 Python
python3多线程知识点总结
2019/09/26 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
2020/07/13 Python
Python远程方法调用实现过程解析
2020/07/28 Python
python爬虫使用requests发送post请求示例详解
2020/08/05 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
HTML5 本地存储实现购物车功能
2017/09/07 HTML / CSS
单位租房协议书样本
2014/10/30 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
导游词之镜泊湖
2019/12/09 职场文书
漫画「请问您今天要来点兔子吗?」最新杂志彩页公开
2022/03/24 日漫