关键词:
嘻嘻。最近在玩nodejs,在我的学习以及理解中nodejs的执行环境主要是分为三个部分的,首先会有一个global的全局对象,然后在这个全局对象中又包含有一个核心模块和文件模块(可以理解为是用户自己写的文件)的。
并且nodejs具有两个特点的,那就是1、是一个非阻塞的I/O模型,也就是说nodejs的操作是异步的。2、是基于事件驱动的程序设计思想的。
今天主要是通过自己搭建服务器和客户端,让两者之间进行通信,模拟出类似问答精灵的一个效果的。在这之前,我们是很有必要了解一下服务器与浏览器之间是怎样进行交互的,其实在服务器端和浏览器端都各自具有一个叫做socket的东西,它就是负责接收以及发送信息的。也就是说浏览器端会通过socket来发送请求,而服务器端也会通过自己的一个socket向浏览器端作出响应处理。
在这个小案例中我们主要用到的一个nodejs的核心模块是“net核心模块”,通过这个模块的方法我们可以创建服务器以及建立服务器与客户端的连接等功能的。
好了,还是直接上代码吧。
服务器端的代码(server.js):
1 //首先使用严格模式来规范文件 2 "use strict"; 3 //引入net核心模块 4 const net = require("net"); 5 //创建服务器socket对象 6 let socketServer = net.createServer(); 7 8 //开启服务器 9 socketServer.on("connection",(socket)=>{ 10 console.log("有客户连接上来了"); //作为测试是否有客户连接 11 //当创建连接后就输出下面的文本 12 socket.write("主人,小丫随时恭候,为您提供最优质的服务!"); 13 14 //当客户端有数据发送过来,触发下面的事件 15 socket.on("data",(content)=>{ 16 //处理用户发送来的信息 17 var msg = content.toString().trim(); 18 //判断用户输入的内容 19 if(msg != ""){ 20 switch(msg){ 21 case "你好!": 22 socket.write("主人,你好!有什么能够帮助到您的吗?"); 23 break; 24 case "早上好!": 25 socket.write("good morning!"); 26 break; 27 case "你好笨哎!": 28 socket.write("主人,我允许你说我笨,但是你不可以侮辱我的智商。"); 29 break; 30 case "你傻不傻呀?": 31 socket.write("主人说我傻我就傻。但是,主人,你忍心说我傻吗?"); 32 break; 33 case "早餐要吃什么呢?": 34 socket.write("主人,你喜欢哟!不过记得要吃有营养的早餐呀!"); 35 break; 36 case "午餐吃什么呢?": 37 socket.write("主人,你可以选择吃饭的哟。"); 38 break; 39 case "晚餐吃什么呢?": 40 socket.write("主人,你好烦哎!"); 41 break; 42 default: 43 socket.write("不知道你在说什么"); 44 break; 45 } 46 } 47 }); 48 //处理异常 49 socket.on("error",()=>{ 50 console.log("客户掉线"); 51 }); 52 }); 53 54 //进行监听 55 socketServer.listen(8088,‘127.0.0.1‘,()=>{ 56 console.log("服务器已经开始"); 57 })
下面的是客户端的代码(client.js):
1 "use strict"; 2 const net = require("net"); 3 4 //得到ip和端口 5 const ip = "127.0.0.1"; 6 const port = 8088; 7 //建立连接 8 var socket = net.createConnection(port,ip,()=>{ 9 //console.log("已连接上服务器"); 10 }); 11 //监听服务器的数据 12 socket.on("data",(content)=>{ 13 console.log(`小丫:${content}`); 14 }); 15 16 //在客户端添加一个输入事件 17 process.stdin.on("readable",()=>{ 18 var msg = process.stdin.read(); 19 if(msg !=null){ 20 //将输入的信息发送到服务器 21 socket.write(msg); 22 } 23 })
当在powershell中分别运行服务器和客户端的时候,就可以实现类似问答精灵的效果了。
注意:要先开启服务器,然后再开启客户端才能正常运行的窝。
效果如下面的图片展示:
nodejs之http模块学习
nodejs中的http模块封装了一个http服务器模块和一个简易的http客户端。http.Server是一个基于事件的http服务器http.request是http客户端工具,用于向http服务器发起请求 而http.createServer方法中的函数参数req和res分别代表请求对象和响... 查看详情
nodejs环境+入门+博客搭建
NodeJS:NodeJS是一个使用了Google高性能V8引擎的服务器端JavaScript实现。它提供了一个(几乎)完全非阻塞I/O栈,与JavaScript提供的闭包和匿名函数相结合,使之成为编写高吞吐量网络服务程序的优秀平台。NPM:全称是NodePackageManager... 查看详情
使用nodejs搭建一个简单的web服务器
使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块、文件系统、url解析模块、路径解析模块、以及301重定向问题,下面我们就... 查看详情
nodejs环境+入门+博客搭建
...知识点介绍NodeJS:NodeJS是一个使用了Google高性能V8引擎的服务器端JavaScript实现。它提供了一个(几乎)完全非阻塞I/O栈,与JavaScript提供的闭包和匿名函数相结合,使之成为编写高吞吐量网络服务程序的优秀平台。NPM:全称是NodeP... 查看详情
rabbitmq集群搭建
实现步骤设计架构模式:在一个集群里,有三台服务器,其中一台使用磁盘模式,另两台使用内存模式。两台内存模式的节点速度更快,因此通过客户端连接访问它们。但是在客户端不可能分别连接两台内存节点,肯定是通过前... 查看详情
模拟搭建简单的路由环境
...车上路啦...... 这次模拟单间一个简单的路由环境,我使用了三个路由器,分别是R1、R2、R3;以及使用了两台主机为A、B;同时还需要路由器和主机都不在一个网段。那行,下面直接上图比较简单明了: 650)this.width=650;"s... 查看详情
无法使用 NodeJS 中的 request 和 express 模块在浏览器中设置 cookie
...39:37【问题描述】:我有一个用express编写的客户端和一个服务器节点。客户端使用请求模块与服务器通信,服务器将响应发送回客户端。在服务器代码中,我将cookie发送回 查看详情
使用nodejs搭建api的mock服务
1.介绍 公司的业务开发都是静态页面,开发前期总是避免不了获取api的问题。在vue中有一些mockjs的方案,方案都是注入性质的,和最终部署总是有差别,而且业务大部分还在zepto下,很难找到合适的方案。... 查看详情
如何使用 CUPS 和 nodejs 打印作业
...了不明白为什么不能打印的地步。我有一个带CUPS的debian服务器,我的想法是从我在NODEJS中的API可以打印一个.pdf。CUPS和NODE都给我同样的错误。“版本”:“2.0”,“状态代码”:“客户端错误错误请求”,“id 查看详情
nodejs实现服务端与客户端简单通信(代码片段)
通过Nodejs,我们可以快速地搭建一个简单的Web服务器,实现服务端与客户端的简单通信。服务端实现过程引入http、fs、url三个模块使用createServer方法创建一个服务服务监听3000端口号当客户端向服务端发起请求时,服... 查看详情
nodejs实现服务端与客户端简单通信(代码片段)
通过Nodejs,我们可以快速地搭建一个简单的Web服务器,实现服务端与客户端的简单通信。服务端实现过程引入http、fs、url三个模块使用createServer方法创建一个服务服务监听3000端口号当客户端向服务端发起请求时,服... 查看详情
如何使用nodejs搭建一个简单的https服务器(代码片段)
为什么要使用HTTPS服务个人隐私以及安全的原因https是未来的趋势HTTPS的组成HTTPS=HTTP+TLS/SSL简单来说在http上套上了一层加密的ssl层HTTPS的基本原理Nodejs搭建HTTPS服务生成HTTPS证书引入HTTPS模块指定证书位置,并创建https服务实战案例... 查看详情
如何使用nodejs快速搭建本地服务器
express+mongodb可以快速建站,nodejs自己也有http模块,直接listen一个端口,localhost:端口号就可以访问了参考技术Anode.js快速搭建网站可以使用一些web框架1:使用express2:使用koa如果开发工具使用的是webstorm的话,该工具内部就可以创... 查看详情
使用 Mockito 模拟服务器-客户端连接
】使用Mockito模拟服务器-客户端连接【英文标题】:Mockingaserver-clientconnectionwithMockito【发布时间】:2017-03-1719:55:51【问题描述】:简介我正在尝试通过将字符串从一个线程发送到另一个线程来测试套接字连接,其中服务器和客户... 查看详情
nodejs初学者经典入门解析
...JavaScript可以脱离客户端浏览器运行,让JavaScript具有服务器语言的能力。我们可以使用NodeJs方便地快速的搭建 易于扩展的网络应用。Node.js 借助事件驱动, 非阻塞I/O 模型变得轻量和高效, 非常适合运行在分布式... 查看详情
保护 NodeJS RESTful API 和 React 客户端应用程序
...S(NextJS)中的前端应用程序,两者都托管在AWS上。客户端和服务器使用JWT令牌进行通信。我想确保客户端应用程序和服务器端应用程序都高度 查看详情
用nodejs搭建一个简单的服务器
使用nodejs搭建一个简单的服务器nodejs优点:性能高(读写文件)数据操作能力强官网:www.nodejs.org 验证是否安装成功:cmd命令行中输入node-v 如果显示版本号表示安装成功【常用命令】切换盘符d:进入文件夹cdnodejs返回上一级目录... 查看详情
用java编写多线程银行atm模拟程序
...员机系统,并按照相应规则获得服务。ØATM系统分成服务器和客户机两个部分,服务器相当于银行的服务器,客户机相当于ATM自动取款机,该模拟程序需要分别实现服务器和ATM客户机程序;ØATM账户及余额等信息可保存... 查看详情