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 相关文章推荐
windows系统下简单nodejs安装及环境配置
Jan 08 NodeJs
nodejs教程 安装express及配置app.js文件的详细步骤
May 11 NodeJs
NodeJS的Promise的用法解析
May 05 NodeJs
NodeJS远程代码执行
Aug 28 NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 NodeJs
nodejs基于WS模块实现WebSocket聊天功能的方法
Jan 12 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
Feb 02 NodeJs
PHPStorm中如何对nodejs项目进行单元测试详解
Feb 28 NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 NodeJs
如何利用nodejs实现命令行游戏
Nov 24 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 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
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
2013/06/25 PHP
ECMAScript5中的对象存取器属性:getter和setter介绍
2014/12/08 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
详解webpack+es6+angular1.x项目构建
2017/05/02 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
python基础教程之循环介绍
2014/08/29 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
python按比例随机切分数据的实现
2019/07/11 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
如何基于Python实现自动扫雷
2020/01/06 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
2020/02/21 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
国际经济贸易专业推荐信
2013/11/06 职场文书
医院护士见习期自我鉴定
2014/04/10 职场文书
元旦趣味活动方案
2014/08/22 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
放牛班的春天观后感
2015/06/01 职场文书
公务员处分决定书
2015/06/25 职场文书
装修安全责任协议书
2016/03/22 职场文书
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android