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,QueryString,Path)模块
Jan 13 NodeJs
nodejs简单实现操作arduino
Sep 25 NodeJs
详解Nodejs的timers模块
Dec 22 NodeJs
nodejs 终端打印进度条实例代码
Apr 22 NodeJs
nodeJS实现简单网页爬虫功能的实例(分享)
Jun 08 NodeJs
详解nodejs通过代理(proxy)发送http请求(request)
Sep 22 NodeJs
详解Nodejs 通过 fs.createWriteStream 保存文件
Oct 10 NodeJs
nodejs项目windows下开机自启动的方法
Nov 22 NodeJs
Nodejs中获取当前函数被调用的行数及文件名详解
Dec 12 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
nodejs二进制与Buffer的介绍与使用
Jul 11 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 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修改时间格式的代码
2011/05/29 PHP
探讨捕获php错误信息方法的详解
2013/06/09 PHP
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
JS常用函数使用指南
2014/11/23 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
2017/03/04 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
2017/05/25 jQuery
深入浅析Vue.js计算属性和侦听器
2018/05/05 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
在Python 3中实现类型检查器的简单方法
2015/07/03 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
python3 爬取图片的实例代码
2018/11/06 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
成绩单评语
2015/01/04 职场文书
党员个人年度总结
2015/02/14 职场文书
大学生自我推荐信范文
2015/03/24 职场文书
英文自荐信范文
2015/03/25 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
机关单位2016年法制宣传日活动总结
2016/04/01 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
JS监听Esc 键触发事键
2021/04/14 Javascript
MySQL5.7并行复制原理及实现
2021/06/03 MySQL