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.pswp.cn/news/250711.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250711.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250711.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Laravel中的Blade模版

Blade模版簡介 Blade模版的好處: 模版繼承(template inheritance)視圖片段(sections)部分指令: extend(‘xxx’)為子頁面指定所繼承的頁面布局模版section(‘xxx’)為子頁面提供所繼承的頁面中指定的部分…

三元表達式,列表解析和生成器表達式

三元表達式 在以前,在諸如比較兩個數大小的時候,通常的寫法都是下面的樣子 if x > y:print("the max is x") else:print("the max is y") 三元表達式的語法為: True if expression else False 現在可以個體三元表達式…

Mysql 如何設置字段自動獲取當前時間,附帶添加字段和修改字段的例子

--添加CreateTime 設置默認時間 CURRENT_TIMESTAMP ALTER TABLE table_nameADD COLUMN CreateTime datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT 創建時間 ; --修改CreateTime 設置默認時間 CURRENT_TIMESTAMP ALTER TABLE table_nameMODIFY COLUMN CreateTime datetim…

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的格子中交戰,有時候最后會只剩下帥和將。根據暗棋的規則,棋子只能上下左右移…

關于字符串比較時候出現的空指針問題的坑

比如說:String Tname driver.getTrueName(); 這個變量是從driver對象中取出的,但是你不知道這個值是空值null; 這個時候如果你這么寫:Tname.equals("張三") 這個時候就會報空指針異常的 修改&#xff1a…

PHP 實現快速排序

首先了解快速排序的原理: 1、先取一個基值,用于每次的標準定位。 2、遍歷數組,將大于基值的放到右邊數組,小于的放到左邊數組 3、將每次的左右數組和基值一起合并 代碼實現: //快速排序 function quick_sort($arr…

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份,然后該元…

1070: [SCOI2007]修車

/*一開始以為是個貪心 發現自己太naive了將每個技術工人拆成n個點,一共拆n*m個,第i個表示倒數第i次修車。 讓每輛車向拆出來的點連邊,費用為tmp[i][j]*k,i是技工,j是車,k是拆出來的第幾個點, 這…

PHP 實現冒泡排序

PHP 實現冒泡排序 直接上代碼 //冒泡排序 function bubble_sort($array){$count count($array);if ($count<0) {return false;}for ($i0; $i <$count ; $i) { for ($j0; $j <$count-$i-1 ; $j) { if ($array[$j]>$array[$j1]) {$tmp $array[$j1];$array[$j1]$a…

node --- 后端使用bcrypt對密碼進行加密處理

密碼的處理 加密處理在線調試: http://www.atool9.com/hash.phpbcrypt: 加密工具安裝 && 使用 npm install --save bcryptconst bcrypt require(bcrypt); const SALT_WORK_FACTOR 10;const UserSchema new Schema({UserId: {type: ObjectId},password: String })U…

統一建模語言UML

目錄 1. UML定義2. UML結構2.1 視圖&#xff08;View&#xff09;2.2 圖&#xff08;Diagram&#xff09;2.3 模型元素&#xff08;Model element&#xff09;2.4 通用機制&#xff08;General mechanism&#xff09;3. 類圖3.1 類與類圖3.2 類之間的關系3.2.1 關聯關系3.2.2 聚…

SpringCloud系列七:使用Ribbon實現客戶端側負載均衡

1. 回顧 在前面&#xff0c;已經實現了微服務的注冊與發現。啟動各個微服務時&#xff0c;Eureka Client會把自己的網絡信息注冊到Eureka Server上。 但是&#xff0c;在生成環境中&#xff0c;各個微服務都會部署多個實例&#xff0c;因此還行繼續進行優化。 2. Ribbon簡介 Ri…

node --- 使用koa-router,讓后端模塊化

使用Koa-router進行路由管理 npm install --save koa-router const Router require(koa-router); let router new Router(); router.get(/, async (ctx)>{ctx.body 用戶操作首頁 })路由模塊化 在appApi下面創建需要模塊化的文件如:home.js、user.js const Router re…

PHP 實現桶排序

PHP 實現桶排序 <?phpfunction Bucket_sort($array){//初始化桶大小$min min($array);$max max($array);$book array_fill($min, $max-$min1, 0);//將要進行的數據進行計數foreach ($array as $key) {$book[$key];// echo $book[$key];}//返回數據$resArr array();for…

springboot ajax返回html

因為攔截器 或者是 shiro 攔截登陸接口 轉載于:https://www.cnblogs.com/xdcr/p/9638569.html

【小試牛刀】短信驗證碼(隨機數)的生成實現

短信驗證碼&#xff0c;相信在生活中大家是幾乎天天能夠遇到。但你知道它是怎樣生成的嗎&#xff1f;其實它就是若干位數的隨機數組合而成。下面附上一小段程序&#xff0c;供大家一起學習交流。package com.fhcq.util;import org.apache.commons.lang3.RandomStringUtils;publ…

node --- 后端使用body-parse解析Post請求,前端使用axios發送Post請求

使用body-parser解析post請求 安裝service/index.js npm install --save koa-bodyparser導入 const Koa require(koa); const app new Koa(); const bodyParser require(koa-bodyparser); app.use(bodyParser)準備請求的url全局配置src/serviceAPI.config.js const LOCA…

PHP 實現二分查找

PHP 實現二分查找 原理&#xff1a; 首先&#xff0c;假設數組中元素是按升序排列&#xff0c;將表中間位置記錄的關鍵字與查找關鍵字比較&#xff0c;如果兩者相等&#xff0c;則查找成功&#xff1b;否則利用中間位置記錄將數組分成前、后兩個子數組&#xff0c;如果中間位…

python基礎:條件循環字符串

while True:a int(input(攝氏度轉換為華氏溫度請按1\n華氏溫度轉化為攝氏溫度請按2\n))if a 1:celsius float(input(輸入攝氏溫度&#xff1a;))fahreaheit (celsius 1.8) 32 # f c9/532print({:.2f}攝氏溫度轉為華氏溫度為{:.2f}.format(celsius, fahreaheit))elif a …