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和PhantomJS抓取网站页面信息以及网站截图
Nov 18 NodeJs
Nodejs全栈框架StrongLoop推荐
Nov 09 NodeJs
浅谈Nodejs应用主文件index.js
Aug 28 NodeJs
Nodejs 获取时间加手机标识的32位标识实现代码
Mar 07 NodeJs
Nodejs进阶之服务端字符编解码和乱码处理
Sep 04 NodeJs
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
Oct 17 NodeJs
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
Feb 02 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 NodeJs
Nodejs环境实现socket通信过程解析
Jul 03 NodeJs
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
Aug 20 NodeJs
用Nodejs实现在终端中炒股的实现
Oct 18 NodeJs
浅谈Node的内存泄露问题
May 06 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缓存设计实现代码
2011/09/30 PHP
PHP截取指定图片大小的方法
2014/12/10 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
九种js弹出对话框的方法总结
2013/03/12 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
纯javascript制作日历控件
2015/07/17 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
Bootstrap开关(switch)控件学习笔记分享
2016/05/30 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
讲解Python中运算符使用时的优先级
2015/05/14 Python
TensorFlow在MAC环境下的安装及环境搭建
2017/11/14 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
PyCharm 常用快捷键和设置方法
2017/12/20 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
django admin组件使用方法详解
2019/07/19 Python
Django中使用session保持用户登陆连接的例子
2019/08/06 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
GitHub上值得推荐的8个python 项目
2020/10/30 Python
详解Python模块化编程与装饰器
2021/01/16 Python
5个你不知道的HTML5的接口介绍
2013/08/07 HTML / CSS
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
班主任寄语大全
2014/04/04 职场文书
应届大专毕业生自我鉴定
2014/04/08 职场文书
电子商务系毕业生自荐信
2014/05/29 职场文书
教师党员群众路线教育实践活动心得体会
2014/11/04 职场文书
售后服务质量承诺书
2015/04/29 职场文书
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS
golang 如何通过反射创建新对象
2021/04/28 Golang