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

这篇具有很好参考价值的文章主要介绍了nodej.s 搭建一个socket服务(原生和sockjs)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原生socket服务

步骤

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

new sockjs,笔记,javascript,前端,npm
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);

完整文件夹目录:
new sockjs,笔记,javascript,前端,npm
其中server.js为原生服务端,使用node运行
new sockjs,笔记,javascript,前端,npm
服务地址为: ws://127.0.0.1:8080

其中sockjs.js为http服务,使用node运行
new sockjs,笔记,javascript,前端,npm
服务地址为: http://localhost:8080/echo

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

附一个测试socket服务的地址:http://wstool.js.org/文章来源地址https://www.toymoban.com/news/detail-589873.html

到了这里,关于nodej.s 搭建一个socket服务(原生和sockjs)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu搭建Nodejs服务器

    转自:https://www.8kiz.cn/archives/3228.html 在Ubuntu上搭建Node.js服务器,按照以下步骤进行: 打开终端。 使用包管理器安装Node.js。可以使用以下命令安装Node.js: 安装Node.js后,你可以使用以下命令来检查Node.js版本: 安装npm(Node.js包管理器)。使用以下命令安装npm: 检查npm版本:

    2024年01月25日
    浏览(46)
  • nodejs从0到1搭建后台服务

    前端: vue3 、 element-plus 、 ts 、 axios 、 vue-router 、 pinia 后端: nodejs 、 koa 、 koa-router 、 koa-body 、 jsonwebtoken 部署: nginx 、 pm2 、 xshell 、腾讯云自带宝塔面板 数据库: mysql 、 redis 开发软件: vs code 、 Another Redis Desktop Manager 、 Navicat Premium 15 dotenv : 将环境变量中的变量从

    2024年02月11日
    浏览(34)
  • 快速入门 NodeJS 之『搭建Web服务器』(搭建个人博客相关)

    1.创建一个空文件夹,在vscode中打开 2.开启package文件,因为需要用到npm包           npm init -y  3.创建bin文件夹,也就是程序运行最开始访问的文件夹  4.www.js创建服务器        将回调函数单独抽离出来,放在根目录文件app.js  5.启动服务器        5.1启动前,将package.json中

    2024年02月05日
    浏览(46)
  • 如何构建一个 NodeJS 影院微服务并使用 Docker 部署

    如何构建一个 NodeJS 影院微服务并使用 Docker 部署。在这个系列中,将构建一个 NodeJS 微服务,并使用 Docker Swarm 集群进行部署。 以下是将要使用的工具: NodeJS 版本7.2.0 MongoDB 3.4.1 Docker for Mac 1.12.6 在尝试本指南之前,应该具备: NodeJS 的基本知识 Docker 的基本知识(并且已经安

    2024年02月12日
    浏览(53)
  • 深入探究node搭建socket服务器

    自从上篇中sokect实现了视频通话,但是是使用ws依赖库实现的服务端,所以最近再看ws源码,不看不知道,一看很惊讶。 接下来一点点记录一下,如何搭建一个简易的服务端socket,来实现上次的视频通讯。 首先看一下ws依赖的调用 所以首选我们要创建一个服务器,然后监听端

    2024年03月14日
    浏览(38)
  • 【Socket】Unix环境下搭建简易本地时间获取服务

    本文搭建一个Unix环境下的、局域网内的、简易的本地时间获取服务。 主要用于验证: 当TCP连接成功后,可以在两个线程中分别进行读操作、写操作动作 当客户端自行终止连接后,服务端会在写操作时收到 SIGPIPE 信号 当客户端执行shutdown写操作后,客户端会在写操作时收到

    2024年02月04日
    浏览(36)
  • 如何使用Nodejs搭建HTTP服务,实现公网远程访问「内网穿透」

    转载自内网穿透工具的文章:使用Nodejs搭建HTTP服务,并实现公网远程访问「内网穿透」 自己用Windows Server搭建了家用NAS主机,WebDAV的文件共享方式当然也是必不可少的。 本文使用的是WIN10 专业版。 1.1 打开控制面板,查看方式改为“类别”,进入“程序”,“启用或关闭Wi

    2024年02月05日
    浏览(52)
  • nodejs-websocket之简单利用node搭建服务器

    一、 需要安装 node.js 通过npm 安装 webSocket包 npm install websocket 二、编写服务端 这段代码是一个使用Node.js的websocket库(nodejs-websocket)创建的服务器,监听端口3000。以下是对代码的简要解释: 引入所需的websocket模块: const ws = require(\\\'nodejs-websocket\\\') 设置服务器端口号: const PORT =

    2024年02月07日
    浏览(46)
  • Linux socket 搭建TCP服务器(C语言)

    ​ 在标题之前,先提几个问题,方便下次查看理解。 什么是TCP TCP服务器需要用到哪些函数 如何简单的搭建一个TCP服务器 ​ TCP 是一种传输层协议,可以提供可靠的数据传输服务。它是面向连接的,具有可靠性、流量控制、拥塞控制以及双工通信的特点。 1. socket ​ socket 作

    2024年04月17日
    浏览(40)
  • 基于TCP/UDP的socket服务器搭建流程

    TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需 要建立连接 TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付 TCP面向字节流,实际上是TCP把数据看成一连串

    2023年04月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包