node --- 创建一个Socket客户端连接到服务器

描述:

  • net.createrServer().listen(60300) 监听客户端访问
  • net.connect({ port: 60300 }) 访问服务器

服务器:

  • 一个很简单的监听文件改变的服务器
  • 每当监听的文件改变了,将信息通过json的格式传递给连接到的客户端 connection.write
// 01、net-watcher.js
'use strict'
const fs = require('fs');
const net = require('net');
const filename = process.argv[2];if (!filename) {throw Error('Error: No filename specified.');
}net.createServer(connection => {console.log('Subscriber connected.');connection.write(JSON.stringify({ type: 'watching', file: filename }) + '\n');const watcher =fs.watch(filename, () => connection.write(JSON.stringify({ type: 'changed', timestamp: Date.now() })));connection.on('close', () => {console.log('Subscriber disconnected.');watcher.close();});
}).listen(60300, () => console.log('Listening for subscriber...'));

客户端:

  • 使用 client = net.coonection({port: xxxx}) 连接到服务器.
  • 使用 client.on(‘data’) 来接收服务器传来的数据,并做相应的处理
// 02、net-watcher-json-client.js
'use strict';
const net = require('net');
const client = net.connect({ port: 60300 });
client.on('data', data => {const message = JSON.parse(data);if (message.type === 'watching') {console.log(`Now watching: ${message.file}`);} else if (message.type === 'changed') {const date = new Date(message.timestamp);console.log(` File changed: ${date} `);} else {console.log(`Unrecognized message type:${message.type}`);}
})

启动

  • 服务器
nodemon 01、net-watcher.js 1.txt

在这里插入图片描述

  • 客户端连接
nodemon 02、net-watcher-json-client.js

在这里插入图片描述

  • 每当改变1.txt, 服务器都会将信息传递给客户端这边.
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css --- 圣杯布局

圣杯布局 左右固定宽度,中间自适应div:nth-child(1) section {display: flex;width: 60%;height: 150px;background-color: pink;margin: 0 auto; }section div:nth-child(1) {width: 100px;height: 150px;background-color: red; }section div:nth-child(2) {flex: 1;backgr…

FZU OJ:2230 翻翻棋

Problem 2230 翻翻棋Accept: 872 Submit: 2132Time Limit: 1000 mSec Memory Limit : 32768 KBProblem Description象棋翻翻棋(暗棋)中双方在4*8的格子中交战,有时候最后会只剩下帅和将。根据暗棋的规则,棋子只能上下左右移…

css --- flex:n的解析

起步 效果如下: 在父元素中,将3个盒子平均分成了3等份代码如下: p span {flex: 1;background-color: lightcoral; }p span:nth-child(even) {border-right: 1px solid black;border-left: 1px solid black; }假设有3个子元素flex:1 的意思是,将剩余的宽度平均分成3份,然后该元…

统一建模语言UML

目录 1. UML定义2. UML结构2.1 视图(View)2.2 图(Diagram)2.3 模型元素(Model element)2.4 通用机制(General mechanism)3. 类图3.1 类与类图3.2 类之间的关系3.2.1 关联关系3.2.2 聚…

SpringCloud系列七:使用Ribbon实现客户端侧负载均衡

1. 回顾 在前面,已经实现了微服务的注册与发现。启动各个微服务时,Eureka Client会把自己的网络信息注册到Eureka Server上。 但是,在生成环境中,各个微服务都会部署多个实例,因此还行继续进行优化。 2. Ribbon简介 Ri…

python基础:条件循环字符串

while True:a int(input(摄氏度转换为华氏温度请按1\n华氏温度转化为摄氏温度请按2\n))if a 1:celsius float(input(输入摄氏温度:))fahreaheit (celsius 1.8) 32 # f c9/532print({:.2f}摄氏温度转为华氏温度为{:.2f}.format(celsius, fahreaheit))elif a …

从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十二║Vue实战:个人博客第一版(axios+router)...

前言 今天正式开始写代码了,之前铺垫了很多了,包括 6 篇基础文章,一篇正式环境搭建,就是为了今天做准备,想温习的小伙伴可以再看看《Vue 基础入门详细的环境搭建》,内容很多,这里就暂时不复习了…

红帽7 su命令与sudo服务

1、su命令 su命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户,比如从root管理员切换至普通用户 [rootlocalhost Desktop]# su - lisi Last login: Wed Sep 12 23:47:44 CST 2018 on pts/0 [lisilocal…

CentOS6找回root密码 - 黑猴子

1)重启Linux,见到下图,在3秒钟之内按下回车 2)三秒之内要按一下回车,出现如下界面 3)按下e键就可以进入下图 4)移动到下一行,再次按e键 5)移动到下一行,进行修…

虚拟机vmware的连接方式以及IP端口,协议等概念

1.NAT虚拟机相当于小弟,宿主机相当于大哥,宿主机虚拟出一个网段供虚拟机上网用 2.Bridge桥接,虚拟机和宿主机相当于局域网中的两台机器 3.Host-Only虚拟机只和宿主机通信,无法上网 32位和64位linux的区别转载于:https://www.cnblo…

__METHOD__

转载于:https://www.cnblogs.com/xiaobiaomei/p/8662846.html

微信小程序 - 五星评分(含半分)

转载自:http://blog.csdn.net/column/details/13721.html演示:下载:小程序-星级评论.zip转载于:https://www.cnblogs.com/cisum/p/9651110.html

分布式版本控制系统Git的安装与使用(作业2)

(本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2103) 分布式版本控制系统Git的安装与使用 一、安装Git bash软件和安装notepad(安装时修改自己安装的路径,git bash最后一个步骤需要都勾…

汇编 --- 初体验

假设内存10000H中的值为23,10001H中的值为11,10002H中的值为22,10003H的值为11 在debug中执行以下代码 mov ax,1000H mov ds,ax mov ax,[0] mov bx,[2] mov cx,[1] add bx,[1] add cx,[2]分析:8086CPU中由于段地址寄存器,无法直接赋值,因此需要先将值赋给通用寄存器然后再给ds…

汇编 --- EXE文件 的程序的加载过程

1.asm 使用编译工具写了一个求2的3次方的程序 assume cs:abcabc segmentmov ax,2add ax,axadd ax,axmov ax, 4c00Hint 21H abc endsend编译&连接 得到可执行文件1.exe 使用debug调试1.exe 进入调试模式 debug 1.exe查看数据段地址和代码段地址 -r 描述: 可以看到此时…

浅谈Floyd的三种用法 By cellur925

Floyd大家可能第一时间想到的是他求多源最短路的n算法。其实它还有另外两种算法的嘛qwq。写一发总结好了qwq。 一、多源最短路 放段代码跑&#xff0c;注意枚举顺序&#xff0c;用邻接矩阵存图。本质是一种动规。 复杂度O(n)。 1 for(int k1;k<n;k) 2 for(int i1;i<n…

js获取viewbag

后台代码&#xff1a; List<WMSRptJHJY> wpjh WMSRptJHJYManage.GetModelList("");   ViewBag.WPJH Newtonsoft.Json.JsonConvert.SerializeObject(wpjh); 前台代码&#xff1a; var aa Html.Raw(ViewBag.WPJH);   var PWJH eval("(" aa &…

汇编 --- 栈结构的妙用

在js中双重循环,代码如下: for(let i 0; i < l1;i){for(let j0; j< l2;j){// todo...} }以上代码在汇编中是如何实现的呢. 汇编中用cx和loop来代表一次循环 mov cx, 4 s: mov ax,1loop s但是如果使用如下方法实现双重循环将会出错 assume cs:codesg, ds:datasgdatasg …

Lvs Tun隧道模式配置

######## TUN是IP Tunneling &#xff0c;IP隧道的简称&#xff0c;它将调度器收到的IP数据包封装在一个新的IP数据包中&#xff0c;转交给应用服务器&#xff0c;然后实际服务器的返回数据会直接返回给用户。 工作原理&#xff1a; 用户请求负载均衡服务器&#xff0c;当IP数…

java实验四——找鞍点

package hello;public class 实验四 {public static void main(String[] args) {// TODO Auto-generated method stubint[][] a {{9,8,6},{2,3,1},{8,5,2}};System.out.println("二维数组为&#xff1a;");for(int i0;i<a.length;i){for(int j0;j<a[i].length;…