原生socket服务

步骤

  1. 新建一个文件夹
  2. 建立三个文件(依赖)


expressSocketSever.js
package-lock.json
package.json

3.打开编辑器终端 ,执行 npm i (或者yarn i ),前提是有包管理器npm或者yarn

客户端

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><input type="text" id="text"><button id="btn" type="button">发送</button><script type="text/javascript">const ws = new WebSocket('ws://localhost:8080')// ws.onopen = function (e) {//   ws.send('来自客户端的信息')// }// ws.onmessage = function (e) {//   console.log(e.data);// }ws.onopen = function () {document.getElementById('btn').onclick = function () {ws.send(document.getElementById('text').value);}}ws.onmessage = function (e) {// document.body.innerHTML += `<p>${e.data}</p>`let p = document.createElement('p')p.innerHTML = e.data;// appendChild() 方法可向节点的子节点列表的末尾添加新的子节点document.body.appendChild(p);}</script>
</body></html>

服务端

const ws = require('nodejs-websocket');const POST = 8080;//消息广播let connections = [];function broadcast(connections, msg) {connections.forEach(function(conn){conn.sendText(msg)})}const server = ws.createServer(connect => {connections.push(connect)connect.on("text", data => {console.log("received: "+data);connect.sendText(data);broadcast(connections,data)});connect.on("close", (code, reason) => {console.log("connection closed!");});connect.on('error', ()=>{console.log("connection error!");});});server.listen(POST, ()=>{console.log("websocket server start success!");});

服务地址为: ws://127.0.0.1:8080
端口号占用可以随意换

非原生,使用sockjs, http服务

建立步骤与原生相同,需要依赖,直接在前面建立的文件基础上新加

客户端

<!doctype html>
<html>
<head><script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script><script src="http://cdn.jsdelivr.net/sockjs/1.0.1/sockjs.min.js"></script><style>.box {width: 300px;float: left;margin: 0 20px 0 20px;}.box div, .box input {border: 1px solid;-moz-border-radius: 4px;border-radius: 4px;width: 100%;padding: 0px;margin: 5px;}.box div {border-color: grey;height: 300px;overflow: auto;}.box input {height: 30px;}h1 {margin-left: 30px;}body {background-color: #F0F0F0;font-family: "Arial";}</style>
</head>
<body lang="en"><h1>Index</h1><div id="first" class="box"><div></div><form><input autocomplete="off" value="Type here..."></input></form></div><script>var sockjs_url = 'http://localhost:8080/echo';var sockjs = new SockJS(sockjs_url);$('#first input').focus();var div  = $('#first div');var inp  = $('#first input');var form = $('#first form');var print = function(m, p) {p = (p === undefined) ? '' : JSON.stringify(p);div.append($("<code>").text(m + ' ' + p));div.append($("<br>"));div.scrollTop(div.scrollTop()+10000);};sockjs.onopen    = function()  {print('[*] open', sockjs.protocol);};sockjs.onmessage = function(e) {print('[.] message', e.data);};sockjs.onclose   = function()  {print('[*] close');};form.submit(function() {print('[ ] sending', inp.val());sockjs.send(inp.val());inp.val('');return false;});</script>
</body>
</html>

服务端

var http = require('http');
var sockjs = require('sockjs');
var current = [];
var echo = sockjs.createServer();
echo.on('connection', function(conn) {current.push(conn)conn.on('data', function(message) {current.forEach((qq)=>  {// qq.write(JSON.stringify(message).replace(/\//g,''));qq.write(message);console.log(qq + conn + 'message')})});conn.on('close', function() {});
});var server = http.createServer();
echo.installHandlers(server, {prefix:'/echo'});
server.listen(8080);

完整文件夹目录:

其中server.js为原生服务端,使用node运行

服务地址为: ws://127.0.0.1:8080

其中sockjs.js为http服务,使用node运行

服务地址为: http://localhost:8080/echo

两个服务端建立连接之后,都会进行广播发送

附一个测试socket服务的地址:http://wstool.js.org/

nodej.s 搭建一个socket服务(原生和sockjs)相关推荐

  1. 搭建一个微服务商城到底可以有多快?

    简介: 极速部署一个微服务电商商城,体验 Serverless 带给您的应用全托管体验. 作者:云原生技术运营 - 望宸 技术实践的门槛不仅在于应用上线后各类问题的排查难度,也在于搭建一个 Demo ...

  2. 快速搭建一个网关服务,动态路由、鉴权看完就会(含流程图)

    [文章来源]https://sourl.cn/tcbSPi 前 言 本文记录一下我是如何使用Gateway搭建网关服务及实现动态路由的,帮助大家学习如何快速搭建一个网关服务,了解路由相关配置,鉴权的流 ...

  3. 创建微服务架构的步骤_如何快速搭建一个微服务架构?

    原标题:如何快速搭建一个微服务架构? 微服务火了很久,但网上很少有文章能做到成熟地将技术传播出来,同时完美地照顾"初入微服务领域人员",从 0 开始,采用通俗易懂的语言去讲解微服务 ...

  4. 快速正确的搭建一个微服务架构需要了解的那几个点

    原文:https://my.oschina.net/u/3636867/blog/1803023 作者:烂猪皮 一.微服务架构四大特性 好的微服务架构是什么样的呢?想要搭建好一个微服务架构,必须要具备 ...

  5. 利用OpenStreetMap(OSM)数据搭建一个地图服务

    图 利用OSM数据简单发布的北京地图服务   一.OSM是什么 开放街道图(OpenStreetMap,简称OSM)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图(wiki: ...

  6. java造轮子:快速搭建一个网关服务,动态路由、鉴权看完就会(含流程图)

    前言 本文记录一下我是如何使用Gateway搭建网关服务及实现动态路由的,帮助大家学习如何快速搭建一个网关服务,了解路由相关配置,鉴权的流程及业务处理,有兴趣的一定看到最后,非常适合没接触过网关服务的 ...

  7. 【技术分享】Sanic+Amis:3天快速搭建一个web服务

    前言 测试工作中,需要搭建一些生产力小工具来提高工作效率. 基于web的服务,无需终端可多人协作,易部署,成为第一选择. 问题:搭建web服务需要全栈知识,编写http服务和前端样式需要一定技术门槛. ...

  8. 如何快速搭建一个微服务架构

    何谓微服务架构的简单模式? 相对于大型互联网平台动辄几万并发的访问量,或者每天多次的在线版本发布,绝大多数企业和项目并没有这样的需求.他们关注的是如何更好地提高开发效率,如何更快地实现新需求,如何更便 ...

  9. 2022最新SpringCloud Alibaba入门到精通超详细版文档,教你从0到1搭建一个微服务项目

    随着近年来互联网应用和需求爆发式的增长,快速迭代,高并发,高业务复杂度也是开发人员需要面临的难题.同时,服务器技术也迅速革新,微服务,云计算,容器管理,负载均衡,持续集成等技术的兴起,也改变了最初的开 ...

最新文章

  1. Mysql高级调优篇——第三章:Sql实战调优场景剖析(上)
  2. 对‘pthread_create’未定义的引用_深入浅出 C++ 11 右值引用
  3. 电子电路基础复习 —— 电感
  4. C#基础(七)虚函数
  5. 一个简单粗暴的前后端分离方案
  6. 陕西省高等数学竞赛_关于参加“陕西高校第十二次大学生高等数学竞赛”的通知...
  7. java 语法检查_java编译期间的语法检查
  8. 宝塔面板不能备份数据库,数据库备份大小20K,数据库备份报错mysqldump: Got error: 1045: Access denied for user 'root'@'localhost'
  9. 数据库镜像怎么还原数据库_镜像数据库上的日志传送
  10. 企业大数据分析平台如何构建
  11. VMware运维工程师常用工具介绍
  12. 公文中的六角括号怎么打?
  13. 安卓插件化开发!移动开发程序员怎么优雅迈过30K+这道坎?全网最新
  14. 高德地图JSAPI点位相关操作
  15. 如何把手机证件照压缩到15KB?手机压缩图片方法
  16. 魔百盒CM201-2_YS(易视腾代工)_MV300/300H芯片_蓝牙语音版_卡刷通刷_刷机固件
  17. python文件的基本操作_Python文件基本操作
  18. 寂然解读设计模式 - 单一职责原则
  19. 湖北大学计算机学院胡院长,胡书山-湖北大学计算机与信息工程学院
  20. 【华为机试真题 Python实现】求n阶方阵里所有数的和

热门文章

  1. Element-ui配合Vue实现走马灯图片自适应效果
  2. 改变el-table行高
  3. 肖秀荣、陆寓丰、徐涛三大名师的正确“打开方式”
  4. python数据分析:使用lifetimes进行客户终身价值(CLV)探索
  5. matlab mck传递函数,我的C实践(4):基本操作的位运算实现
  6. 【tsinsen A1490】osu!(乔明达) 矩阵+线段树
  7. 使用XXLjob中间件进行定时任务的管理
  8. 入门级资料——电池的工作过程
  9. 用一个比喻来解释对 同步 异步 阻塞 非阻塞 轮询 回调 的理解
  10. php赵普,赵普辞职央视主播一年多 自己创办了“东家守艺”