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写的一个简单项目打包工具
May 11 NodeJs
Windows系统下使用Sublime搭建nodejs环境
Apr 13 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
NodeJS远程代码执行
Aug 28 NodeJs
nodejs个人博客开发第四步 数据模型
Apr 12 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
nodejs body-parser 解析post数据实例
Jul 26 NodeJs
nodejs多版本管理总结
Apr 03 NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 NodeJs
nodejs制作小爬虫功能示例
Feb 24 NodeJs
Nodejs + sequelize 实现增删改查操作
Nov 07 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 采集程序中常用的函数
2009/12/09 PHP
fleaphp常用方法分页之Pager使用方法
2011/04/23 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
自动最大化窗口的Javascript代码
2013/05/22 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
Javascript检查图片大小不要让大图片撑破页面
2014/11/04 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
2015/08/22 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
Python 列表list使用介绍
2014/11/30 Python
python字典DICT类型合并详解
2017/08/17 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
python求最大公约数和最小公倍数的简单方法
2020/02/13 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
html5定制表单_动力节点Java学院整理
2017/07/11 HTML / CSS
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
护理专业毕业生自我鉴定
2013/10/08 职场文书
物业管理计划书
2014/01/10 职场文书
《再别康桥》教学反思
2014/02/12 职场文书
2015中学教学工作总结
2015/07/22 职场文书
推广普通话主题班会
2015/08/17 职场文书
python基础之文件操作
2021/10/24 Python
Python实现归一化算法详情
2022/03/18 Python