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教程之异步I/O
Nov 21 NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 NodeJs
Nodejs实现短信验证码功能
Feb 09 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
May 13 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
nodejs使用redis作为缓存介质实现的封装缓存类示例
Feb 07 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
nodejs通过钉钉群机器人推送消息的实现代码
May 05 NodeJs
typescript nodejs 依赖注入实现方法代码详解
Jul 21 NodeJs
NodeJs crypto加密制作token的实现代码
Nov 15 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合并数组+与array_merge的区别分析
2010/08/01 PHP
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
php跨域cookie共享使用方法
2014/02/20 PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
2015/03/25 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
jqPlot Option配置对象详解
2009/07/25 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
Python标准库内置函数complex介绍
2014/11/25 Python
Python实现感知机(PLA)算法
2017/12/20 Python
Python docx库用法示例分析
2019/02/16 Python
python2和python3在处理字符串上的区别详解
2019/05/29 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
2019/07/31 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
如何卸载python插件
2020/07/08 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
优质飞蝇钓和渔具:RiverBum
2020/05/10 全球购物
给学校的建议书
2014/03/12 职场文书
班组长安全工作职责
2014/07/15 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
干部对照检查材料范文
2014/08/26 职场文书
同学聚会祝酒词
2015/08/10 职场文书
创业计划书之寿司
2019/07/19 职场文书
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript