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的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
NodeJS学习笔记之Connect中间件模块(一)
Jan 27 NodeJs
NodeJS Web应用监听sock文件实例
Feb 18 NodeJs
Nodejs学习item【入门手上】
May 05 NodeJs
nodejs的HTML分析利器node-jquery用法浅析
Nov 08 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
nodeJs链接Mysql做增删改查的简单操作
Feb 04 NodeJs
用Nodejs搭建服务器访问html、css、JS等静态资源文件
Apr 28 NodeJs
Nodejs 复制文件/文件夹的方法
Aug 24 NodeJs
nodejs更改项目端口号的方法
May 13 NodeJs
nodejs环境使用Typeorm连接查询Oracle数据
Dec 05 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 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在各种web服务器的运行模式详解
2013/06/03 PHP
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
页面加载完后自动执行一个方法的js代码
2014/09/06 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
2016/01/04 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
js css自定义分页效果
2017/02/24 Javascript
JavaScript变量作用域_动力节点Java学院整理
2017/06/27 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
详解如何在vue项目中使用layui框架及采坑
2019/05/05 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
Python的字典和列表的使用中一些需要注意的地方
2015/04/24 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
详解python opencv、scikit-image和PIL图像处理库比较
2019/12/26 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
appium+python自动化配置(adk、jdk、node.js)
2020/11/17 Python
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
ManoMano英国:欧洲第一家专注于DIY和园艺市场的电商平台
2020/03/12 全球购物
学习雷锋精神演讲稿
2014/05/10 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
北京离婚协议书范文2014
2014/09/29 职场文书
创先争优活动个人总结
2015/03/04 职场文书
《称赞》教学反思
2016/02/17 职场文书