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实现PHP的print_r函数代码
Mar 14 NodeJs
轻松创建nodejs服务器(4):路由
Dec 18 NodeJs
NodeJS中利用Promise来封装异步函数
Feb 25 NodeJs
nodejs基础应用
Feb 03 NodeJs
NodeJS学习笔记之Module的简介
Mar 24 NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 NodeJs
详解Nodejs之npm&amp;package.json
Jun 15 NodeJs
详解nodejs通过代理(proxy)发送http请求(request)
Sep 22 NodeJs
nodejs读取并去重excel文件
Apr 22 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 NodeJs
nodejs实现的http、https 请求封装操作示例
Feb 06 NodeJs
NodeJS和浏览器中this关键字的不同之处
Mar 03 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简单系统查询模块代码打包下载
2008/06/07 PHP
php include,include_once,require,require_once
2008/09/05 PHP
PHP中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
详解PHP字符串替换str_replace()函数四种用法
2017/10/13 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
又一个图片自动缩小的JS代码
2007/03/10 Javascript
Javascript 函数对象的多重身份
2009/06/28 Javascript
编写Js代码要注意的几条规则
2010/09/10 Javascript
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
2013/04/15 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
浅谈bootstrap源码分析之tab(选项卡)
2016/06/06 Javascript
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
JavaScript实现图片伪异步上传过程解析
2020/04/10 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
PyQt5实现拖放功能
2018/04/25 Python
Python中存取文件的4种不同操作
2018/07/02 Python
python交易记录链的实现过程详解
2019/07/03 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
Python判断字符串是否xx开始或结尾的示例
2019/08/08 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
2020/02/25 Python
Django中FilePathField字段的用法
2020/05/21 Python
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
信息工作经验交流材料
2014/05/28 职场文书
代理人委托书
2014/08/01 职场文书
父亲去世追悼词
2015/06/23 职场文书
创业计划书介绍
2019/04/24 职场文书
python热力图实现的完整实例
2022/06/25 Python
Win10本地连接不见了怎么恢复? win10系统电脑本地连接不见了解决方法
2023/01/09 数码科技