node+ws模块实现websocket
先来吐槽一下,想要找点技术文章真**不容易,全是**复制粘贴,还冒充原创。搜索一个ws实现websocket全是一样的。一个字都没变,我能说什么。最后想到搜索ws模块githup居然前两页没有,也是那些重复的文章,无力吐槽。推荐一个githup上面的https://github.com/websockets/ws#broadcast-example
先来看下我的成果:在谷歌和火狐浏览器上链接上websocet实现同步。
先贴上我的后台代码(nodejs):
需要安装express模块、ws模块
 var express = require('express');
 var http = require('http');
 var WebSocket = require('ws');
 var app = express();
 app.use(express.static(__dirname));
 var server = http.createServer(app);
 var wss = new WebSocket.Server({server});
 wss.on('connection', function connection(ws) {
     console.log('链接成功!');
     ws.on('message', function incoming(data) {
         /**
          * 把消息发送到所有的客户端
          * wss.clients获取所有链接的客户端
          */
         wss.clients.forEach(function each(client) {
             client.send(data);
         });
     });
 });
 server.listen(8000, function listening() {
     console.log('服务器启动成功!');
 });
客户端代码:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>在线聊天</title>
</head>
<body>
<input type="text" onblur="wsServer.onopen(this.value)">
<script>
var wsServer = new WebSocket('ws://127.0.0.1:8000');
wsServer.onopen = function (e) {
(typeof e == 'string') && wsServer.send(e);//向后台发送数据
};
wsServer.onclose = function (e) {//当链接关闭的时候触发 };
wsServer.onmessage = function (e) {//后台返回消息的时候触发
console.log(e);
};
wsServer.onerror = function (e) {//错误情况触发 }
</script>
</body>
</html>
写的很简单,反正能运行就行。
node+ws模块实现websocket的更多相关文章
- node.js中ws模块创建服务端和客户端,网页WebSocket客户端
		首先下载websocket模块,命令行输入 npm install ws 1.node.js中ws模块创建服务端 // 加载node上websocket模块 ws; var ws = require( ... 
- [转]【NODE】用WS模块创建加密的WS服务(WSS)
		[From] https://luojia.me/2015/07/21/%E3%80%90node%E3%80%91%E7%94%A8ws%E6%A8%A1%E5%9D%97%E5%88%9B%E5% ... 
- node使用https,webSocket开启wss
		1. 前言 看WEBRTC教程时使用到WebSocket来传输信令,node端使用了ws库来实现,但在浏览器端http无法获取本地媒体,必须使用https,使用https后webSocket 不能使用 ... 
- nodejs+expressjs+ws实现了websocket即时通讯,服务器和客户端互相通信
		nodejs代码 // 导入WebSocket模块: const WebSocket = require('ws'); // 引用Server类: const WebSocketServer = We ... 
- 深入浅出node(2) 模块机制
		这部分主要总结深入浅出Node.js的第二章 一)CommonJs 1.1CommonJs模块定义 二)Node的模块实现 2.1模块分类 2.2 路径分析和文件定位 2.2.1 路径分析 2.2.2 ... 
- Node.js模块
		每一个Node.js都是一个Node.js模块,包括JavaScript文件(.js).JSON文本文件(.json)和二进制模块文件(.node). mymodul.js function Hell ... 
- 如何发布一个自定义Node.js模块到NPM(详细步骤)
		咱们闲话不多说,直接开始! 由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致. 文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍: 本文本着, ... 
- 编写原生Node.js模块
		导语:当Javascript的性能需要优化,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了. 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项 ... 
- 编写原生的Node.js模块
		导语:当Javascript的性能遭遇瓶颈,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了. 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项 ... 
随机推荐
- input文本框的value属性在页面中不随输入的数据而变化
			今天,在做试验遇到这么一个需求: 一个input文本框,输入值后将标签传到后台,在后台解析标签,发现value仍然是初值,不是我们改变后的值. 例如: <input name="&qu ... 
- Java线程的5种状态及切换(透彻讲解)
			http://blog.csdn.net/pange1991/article/details/53860651 
- Minimum Spanning Tree.prim/kruskal(并查集)
			开始了最小生成树,以简单应用为例hoj1323,1232(求连通分支数,直接并查集即可) prim(n*n) 一般用于稠密图,而Kruskal(m*log(m))用于系稀疏图 #include< ... 
- 魔咒词典--hdu1880(字符串  暴力)
			http://acm.hdu.edu.cn/showproblem.php?pid=1880 不要想其他的 暴力就能过 #include <iostream> #include < ... 
- Java二维码的解码和编码
			原文:http://www.open-open.com/code/view/1430906793866 import java.io.File; import java.util.Hashtable; ... 
- FIREDAC驱动ORACLE的配置
			1)部署中间件所在的机器必须安装OCI 2)verdorlib,指定OCI所在路径 
- Null value was assigned to a property of primitive type setter of原因及解决
			出现Null value was assigned to a property of primitive type setter of错误是由于类型不匹配,将字段的属性由hibernate的int类型 ... 
- 使用POI操作Excel时new XSSFWorkbook ()报错java.lang.NoSuchMethodError解决方式
			使用最新的POI3.11时,在执行 Workbook workBook = new XSSFWorkbook ();这段代码时出现错误: java.lang.NoSuchMethodError: j ... 
- [Unity-22] Coroutine协程浅析
			1.概念解释 协程并非一个独立的线程.在Unity中.全部的语句都是在一个线程中运行的,也就是说.Unity是单线程的(详细的能够參见http://blog.csdn.net/alexander_xf ... 
- crm使用soap删除下拉框
			//C# 代码: //DeleteOptionSetRequest request = new DeleteOptionSetRequest(); //request.Name = "new ... 
