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服务器(4):路由
Dec 18 NodeJs
NodeJS学习笔记之Connect中间件模块(二)
Jan 27 NodeJs
NodeJS使用jQuery选择器操作DOM
Feb 13 NodeJs
PHP和NodeJs开发的应用如何共用Session
Apr 16 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
Nodejs获取网络数据并生成Excel表格
Mar 31 NodeJs
Nodejs 搭建简单的Web服务器详解及实例
Nov 30 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
nodejs实现超简单生成二维码的方法
Mar 17 NodeJs
nodejs实现UDP组播示例方法
Nov 04 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重新实现PHP脚本引擎内置函数
2007/03/06 PHP
php入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
原生js做的手风琴效果的导航菜单
2013/11/08 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
谷歌浏览器调试JavaScript小技巧
2014/12/29 Javascript
jQuery中innerHeight()方法用法实例
2015/01/19 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
2016/12/26 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
使用javascript函数编写简单银行取钱存钱流程
2018/05/26 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
js实现小时钟效果
2020/03/25 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
利用python批量修改word文件名的方法示例
2017/10/17 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
对pandas处理json数据的方法详解
2019/02/08 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
通信工程专业女生个人求职信
2013/09/21 职场文书
主管会计岗位责任制
2014/02/10 职场文书
车队司机个人自我鉴定
2014/04/17 职场文书
火箭队口号
2014/06/18 职场文书
医院感染管理制度
2015/08/05 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS
PostgreSQL之连接失败的问题及解决
2023/05/08 PostgreSQL