3 替代websocket_WebSocket基础讲解(2)

0.引言

本篇文章主要讲解如何在服务端使用websocket。如果在服务端使用websocket,那就需要使用Node.js,就需要安装nodejs-websocket。也可以参考前面的文章进行学习:

WebSocket基础讲解(1)

nodejs入门的学习教程:

https://www.runoob.com/nodejs/nodejs-tutorial.html

1.NodeJs简述

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型

Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。 发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。

Node对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。V8引擎执行Javascript的速度非常快,性能非常好。Node是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。。通俗点说,node.js就是运行在服务端的JavaScript。

官网界面如下:

ff218ceda5110e07cf0c050dd7cf2579.png

nodejs官网地址:

https://www.npmjs.com/package/nodejs-websocket

官网界面如下:

74768eca64f7db0c1331d234569cd27e.png

更详细的学习,可以参考官网,官网给出的还是比较学习。

2.安装NodeJs在服务器端

(1)在指定的工程目录,执行如下命令:

sudo npm init

or

如果不想使用Enter键,使用如下命令:

sudo npm init -y

执行目录为这样,链接如下:

239682441f6c75d9355d1731f646e2dd.png

执行过程的界面如下:

eaa1eeb9eb03285245b13936966402cb.png
f8b449ceaf59a4ff4f4f477f9505654b.png

注意:如果需要要输入字符的,那就一直输入回车键就行了。

这样最终会生成这个文件,如下:

48b0b84d87fa13b51345ebcfeaf89390.png

看看package.json是什么内容,执行如下命令:

cat package.json

package.json内容如下界面:

7223a88c86a7d9ad350f03689f5631a3.png

1.1 安装nodejs-websocket

安装nodejs-websocket,在以下路径:

680c6e900624e7054fac9fd603da1b75.png

(1)执行如下命令:

sudo npm install nodejs-websocket

执行过程如下:

774443ce4a0230a4ba74c737e2628be5.png

这样就会把websocket相关的组件下载到node_modules。下载后会生成node_modules和package-lock.jaon。

f55c0dd68b59810ae4c8170b41e39da5.png

cd node_modules

5813b19714162cec57c80999c7fdcb72.png

cd nodejs-websocket/

57e156e58cb79d11494183e5fefc1b60.png

如果对这些感兴趣,可以去看看每个文件。

2.Node的优点

Node作为一个新兴的前端框架,后台语言,有很多吸引人的地方:

RESTful API

单线程

Node可以在不新增额外线程的情况下,依然可以对任务进行并发处理 —— Node.js是单线程的。它通过事件循环(event loop)来实现并发操作,对此,我们应该要充分利用这一点 —— 尽可能的避免阻塞操作,取而代之,多使用非阻塞操作。

非阻塞IO

V8虚拟机

事件驱动

3.NodeJs的Module

Node使用Module模块去划分不同的功能,以简化应用的开发。Modules模块有点像C++语言中的类库。每一个Node的类库都包含了十分丰富的各类函数,比如http模块就包含了和http功能相关的很多函数,可以帮助开发者很容易地对比如http,tcp/udp等进行操作,还可以很容易的创建http和tcp/udp的服务器。

要在程序中使用模块是十分方便的,只需要如下:

在这里,引入了http类库,并且对http类库的引用存放在http变量中了。这个时候,Node会在我们应用中搜索是否存在node_modules的目录,并且搜索这个目录中是否存在http的模块。如果Node.js找不到这个目录,则会到全局模块缓存中去寻找,用户可以通过相对或者绝对路径,指定模块的位置,比如:

var myModule = require('./myModule.js');

模块中包含了很多功能代码片断,在模块中的代码大部分都是私有的,意思是在模块中定义的函数方法和变量,都只能在同一个模块中被调用。当然,可以将某些方法和变量暴露到模块外,这个时候可以使用exports对象去实现。

参考链接,如下地址:

https://baike.baidu.com/item/node.js/7567977?fromtitle=nodejs&fromid=11244313&fr=aladdin

NodeJs官方网站链接如下:

https://www.npmjs.com/package/nodejs-websocket

官网界面如下:

216207904dfccfbc78584f736c596288.png

4.NodeJs重要关注点

对于刚接触NodeJs,主要关注一些比较重要的点就可以了(需要关注一系列的回调函数),如下:

(1)怎样创建websocket服务器,通过createServer和listen接口。

(2)怎样判断有新的连接过来,createServer的回调函数做判断。

(3)怎样判断关闭事件,通过on("close", callback) 事件的回调函数。

(4)怎样判断接收到数据,通过on("text",callback)事件的回调函数。

(5)怎样判断接收异常,通过on("error",callback)事件的回调函数。

(9)怎样主动发送数据,调用sendText。

参考的示例代码如下:

var ws = require("nodejs‐websocket") // Scream server example: "hi" ‐> "HI!!!" var server = ws.createServer(function (conn) { console.log("New connection") conn.on("text", function (str) { // 收到数据的响应 console.log("Received "+str) conn.sendText(str.toUpperCase()+"!!!") // 发送 }) conn.on("close", function (code, reason) { // 关闭时的响应 console.log("Connection closed") }) conn.on("error", function (err) { // 出错 console.log("error:" + err); }); }).listen(8001)

由上可以知道,依赖回调函数实现,需要去实现回调函数。

5.总结

本篇文章主要是讲解在服务端NodeJS的安装和重要函数的讲解。欢迎关注,转发,点赞,收藏

关于项目有关的知识,欢迎关注微信公众号"记录世界 from antonio"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值