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 相关文章推荐
抛弃Nginx使用nodejs做反向代理服务器
Jul 17 NodeJs
nodejs下打包模块archiver详解
Dec 03 NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
浅谈nodejs中的类定义和继承的套路
Jul 26 NodeJs
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
Sep 18 NodeJs
Nodejs实现爬虫抓取数据实例解析
Jul 05 NodeJs
详解Nodejs get获取远程服务器接口数据
Mar 26 NodeJs
M2实现Nodejs项目自动部署的方法步骤
May 05 NodeJs
nodejs一个简单的文件服务器的创建方法
Sep 13 NodeJs
Nodejs + sequelize 实现增删改查操作
Nov 07 NodeJs
Node.js实现爬取网站图片的示例代码
Apr 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
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
详谈PHP文件目录基础操作
2014/11/11 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
php探针使用原理和技巧讲解
2019/09/17 PHP
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
JavaScript将一个数组插入到另一个数组的方法
2015/03/19 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
2015/10/30 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
js 定位到某个锚点的方法
2016/11/19 Javascript
JQuery学习总结【一】
2016/12/01 Javascript
原生js实现放大镜特效
2017/03/08 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
详解VUE项目中安装和使用vant组件
2019/04/28 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
python os.path.isfile 的使用误区详解
2019/11/29 Python
keras小技巧——获取某一个网络层的输出方式
2020/05/23 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
英国浴室洗脸盆购物网站:Click Basin
2018/06/08 全球购物
广州一家公司的.NET面试题
2016/06/11 面试题
房地产销售经理岗位职责
2014/01/01 职场文书
打架检讨书800字
2014/01/10 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
社区党支部承诺书
2015/04/29 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
十大必看国产动漫排名,魁拔上线,第二曾在日本播出
2022/03/18 国漫