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截取模块url-extract的使用实例
Nov 18 NodeJs
NodeJS学习笔记之Connect中间件模块(二)
Jan 27 NodeJs
Nodejs中 npm常用命令详解
Jul 04 NodeJs
详解nodejs中exports和module.exports的区别
Feb 17 NodeJs
深入nodejs中流(stream)的理解
Mar 27 NodeJs
nodejs实现套接字服务功能详解
Jun 21 NodeJs
nodejs用gulp管理前端文件方法
Jun 24 NodeJs
Nodejs实现爬虫抓取数据实例解析
Jul 05 NodeJs
nodejs实现日志读取、日志查找及日志刷新的方法分析
May 20 NodeJs
NodeJS有难度的面试题(能答对几个)
Oct 09 NodeJs
nodejs使用socket5进行代理请求的实现
Feb 21 NodeJs
在NodeJs中使用node-schedule增加定时器任务的方法
Jun 08 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调用dll的实例操作动画与代码分享
2012/08/14 PHP
PHP exif扩展方法开启详解
2014/07/28 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
ArrayList类(增强版)
2007/04/04 Javascript
Prototype Hash对象 学习
2009/07/19 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
调试代码导致IE出错的避免方法
2014/04/04 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
JavaScript的代码编写格式规范指南
2015/12/07 Javascript
学习JavaScript设计模式之模板方法模式
2016/01/20 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
创建一般js对象的几种方式
2017/01/19 Javascript
深入理解js中的加载事件
2017/02/08 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
JavaScript中关于class的调用方法
2017/11/28 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
2020/08/21 Javascript
JS实现网站吸顶条
2020/01/08 Javascript
js实现简单商品筛选功能
2021/02/02 Javascript
Python写入CSV文件的方法
2015/07/08 Python
Python 中Pickle库的使用详解
2018/02/24 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
世界上最大的皮肤科医生拥有和经营的美容网站:LovelySkin
2021/01/03 全球购物
求职简历的自我评价
2014/01/31 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
导游词之介休绵山
2019/12/31 职场文书