使用nodejs分别搭建一个服务器和客户端,模拟问答精灵

嘻嘻。最近在玩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中分别运行服务器和客户端的时候,就可以实现类似问答精灵的效果了。

注意:要先开启服务器,然后再开启客户端才能正常运行的窝。

效果如下面的图片展示:

时间: 2024-10-11 12:24:36

使用nodejs分别搭建一个服务器和客户端,模拟问答精灵的相关文章

nodejs 简单的搭建一个服务器

前言: nodejs 主要是后台语言 模块 自定义 JavaScript 是前台语言 nodejs 是 也是使用我们的 JavaScript 语言,甚至他的引擎都是 chrome 的 v8 引擎,开源,所以学习 nodejs 对于我们前端来说,是一件极其友好的事情 后台的语言: php python Java nodejs 的优势 1. 性能 经过某个不专业的人士测试: nodejs 比 php 的 性能高 86倍 nodejs 运行 1s   php 要运行 一分半 就是写一个项目:php 

Windows操作系统下搭建Git服务器和客户端。

本文将介绍如何在Windows操作系统下搭建Git服务器和客户端.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配置,简单易用.客户端是采用的TortoiseGit工具,UI操作,省去输入命令的麻烦,对于windows用户来说更易于使用. 所需软件: Git服务器端: BONOBO GIT SERVER,下载最新版:http://bonobogitserver.com/ Git客户端: msysgit,下载最新

json server的简单使用(附:使用nodejs快速搭建本地服务器)

作为前端开发人员,经常需要模拟后台数据,我们称之为mock.通常的方式为自己搭建一个服务器,返回我们想要的数据.json server 作为工具,因为它足够简单,写少量数据,即可使用. 安装 首先需要安装nodejs,建议使用最新版本.然后全局安装json server. npm install json-server -g 安装完成后可以用 json-server -h 命令检查是否安装成功,成功后会出现json-server相关的参数选项. 运行 安装完成后,可以在任一目录下建立一个 xxx

nodejs入门——搭建一个聊天室应用

个人博客 http://mvc.coding.io/ 1入门教程推荐 node入门 很早之前看的就是这个,比较浅显易懂,看一遍就明白nodejs到底是怎么一回事儿了 2开源项目 昨天在coding上看到了一个nodejs聊天室,fork了一份 nodejs聊天室 3环境搭建 nodejs官网,下载最新版本(本人电脑win7 64位),安装过程下一步下一步就行,安装会自动配置环境变量, 建议安装目录自己选择一下,别默认安装在C:\Program Files\ 目录下(目录有空格 会出现一些问题)

10、使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。 服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。

/**10.使用TCP协议完成一个客户端一个服务器.客户端从键盘输入读取一个字符串,发送到服务器. 服务器接收客户端发送的字符串,反转之后发回客户端.客户端接收并打印. * 客户端*/ import java.io.*; import java.net.*; public class Test10_Client { public static void main(String[] args) throws Exception { Socket s = new Socket("192.168.0.

vue+elementUI框架,nodejs+router搭建本地服务器,数据库用mongoose,axios请求碰到的一些问题

在做这个项目练手时碰到的一些问题记录一下,加深印象 服务器的目录层级如下: 一.简单的搭建一个服务器,如何划分路由 1.在搭建好的后端服务器  app.js 中导入路由,代码如下: var express = require('express') // 导入路由 用户 var user = require('./router/user.js') var app = express() app.use(express.static('public')) // 在路由配置前添加以下代码 解决跨域问题

Azure搭建SVN服务器及客户端简介

SVN是版本控制器,自从用了它,我就根本离不开他了.团队工作中,用它能够防止冲突,进行版本控制.个人工作中,利用他也能够带来很多方便. 首先弄清楚一点,svn分成服务端和客户端.SVN服务器就相当于apache服务器,客户端就相当于浏览器,客户端不会在乎你是哪个软件/哪个系统(Windows下的TortoiseSVN还是Mac下的Versions). 下面我介绍如何在Azure平台上搭建SVN服务器 服务器端 1.创建Azure虚拟机.具体见:http://www.kangry.net/blog

ubuntu14.04/16.04搭建git服务器和客户端

1. git安装 一般ubuntu默认已经安装了git,可以用如下命令查看有没有安装git: $ git --version 如果已经安装了git会显示版本号例如"git version 1.9.1", 如果没有安装就需要安装git,用如下命令: $ sudo apt-get install git 2. git客户端之配置用户 在用户当前目录例如/home/zhangshan下通过以下命令配置git客户端用户: $ git config --global  user.name &qu

怎么在自己电脑上搭建一个服务器,以便于外网访问呢?

前几天我要测试一个项目,这个是需要往服务器上放才可以测的,但后台太忙了,所以就说让我自己在自己电脑搭建个服务器,把项目代码放在里面测就可以,其实搭建服务器的方法有很多,之前我有用过一个XMAPP的软件它也是可以作为服务器承载代码,以供别人访问,不过我觉得比较流行的还是Tomcat服务器: 其实我们偶尔也会写一下网页,javaweb程序,为了逼近现实,我们的项目发布后,都希望我们的项目能让更多的人看到,难道我们要自己去买域名么,买空间么?其实我个人觉得如果不是需要很大的持续的访问量的话,完全没有必