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实现多人同时在线移动鼠标的小游戏分享
Dec 06 NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 NodeJs
浅谈nodejs中的类定义和继承的套路
Jul 26 NodeJs
nodejs对express中next函数的一些理解
Sep 08 NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 NodeJs
使用vs code开发Nodejs程序的使用方法
Sep 21 NodeJs
Nodejs调用WebService的示例代码
Sep 29 NodeJs
webstorm中配置nodejs环境及npm的实例
May 15 NodeJs
NodeJS加密解密及node-rsa加密解密用法详解
Oct 12 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 NodeJs
Nodejs实现微信分账的示例代码
Jan 19 NodeJs
浅谈JS和Nodejs中的事件驱动
May 05 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
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
php 数组使用详解 推荐
2011/06/02 PHP
php XPath对XML文件查找及修改实现代码
2011/07/27 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
IE8 中使用加速器(Activities)
2010/05/14 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
javascript中call和apply的用法示例分析
2015/04/02 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
基于JavaScript实现网页倒计时自动跳转代码
2015/12/28 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
JavaScript中常用的简洁高级技巧总结
2019/03/10 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
python函数缺省值与引用学习笔记分享
2013/02/10 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
Python3.6简单反射操作示例
2018/06/14 Python
windows下安装Python虚拟环境virtualenvwrapper-win
2019/06/14 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
python实现滑雪者小游戏
2020/02/22 Python
中海讯通笔试题
2015/09/15 面试题
自我鉴定怎么写
2013/12/05 职场文书
三八红旗手先进事迹材料
2014/05/13 职场文书
公务员年度考核评语
2014/12/31 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
安全生产培训心得体会
2016/01/18 职场文书
python tkinter模块的简单使用
2021/04/07 Python
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis