nodejs游戏源码解析:《球球大作战》的Websocket知识

2017年5月14日 阅读:94

运行服务端后,玩家只要打开浏览器,输入地址和端口,就可以看到游戏画面。这就意味着,游戏服务端开了个http服务器。Node.js 标准库提供了 http 模块,其中封装了一个高效的 HTTP服务器和一个简易的HTTP 客户端。http.Server是一个基于事件的HTTP服务器,它的核心由Node.js下层C++部分实现,而接口由 JavaScript 封装,兼顾了高性能与简易性。http.request 则是一个HTTP 客户端工具,用于向 HTTP 服务器发起请求。关于http服务端的入门,可以参考下面教程。

http://www.tuicool.com/articles/Nvae22

安装http包

使用http模块,必须先安装它,执行npm install http命令安装即可。

显示Html文本

新建一个js文件,然后输入如下的代码。通过require(‘http’).Server创建一个http服务器,“http.listen”表示开启监听,如下代码是监听3001端口,监听成功后会在屏幕中打印出“[DEBUG] Listening”。http.on(‘request’function(){……})表示当服务端收到客户端的请求时做出怎样的处理,这里向客户端返回html信息。

运行脚本,然后用浏览器打开3001端口,即可看到html文本。

用express显示Html文件

Express 是一个基于Node.js平台的web应用开发框架,可以使用它指定要显示的网页文件。在使用之前需要使用npm install express命令安装express。

 

新建js文件填入下面的代码,除了创建http服务器外,还使用express指定了网页目录“__dirname + ‘/’”,即代码文件的同一目录下。

在同一目录下新建index.html,输入下面的文本。

运行服务端,用浏览器打开页面,将会看到如下网页。

WebSocket介绍

谈到Web实时推送,就不得不说WebSocket。在WebSocket出现之前,很多网站为了实现实时推送技术,通常采用的方案是轮询 (Polling)和Comet技术,Comet又可细分为两种实现方式,一种是长轮询机制,一种称为流技术,这两种方式实际上是对轮询技术的改进,这些 方案带来很明显的缺点,需要由浏览器对服务器发出HTTP request,大量消耗服务器带宽和资源。面对这种状况,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽并实现真正意义上的实 时推送。

WebSocket协议本质上是一个基于TCP的协议,它由通信协议和编程API组成,WebSocket能够在浏览器和服务器之间建立双向连接, 以基于事件的方式,赋予浏览器实时通信能力。既然是双向通信,就意味着服务器端和客户端可以同时发送并响应请求,而不再像HTTP的请求和响应。

具体可以参考下面的文章

http://www.open-open.com/lib/view/open1402479198587.html

WebSocket简单实例

下面通过一个简单的例子介绍WebSocket的使用方法,在安装WebSocket后编写如下的代码和html文件。当客户端发起连接(connection)后,它会打印出“A user connected!”

html代码如下所示,页面中会有一个按钮,当点击按钮时,会通过io.connect连接服务端

运行程序,点击客户端上的按钮,服务端会显示“A user connected!”

收发信息

客户端和服务端可要相互通信,在下面的例子中,网页上有connect和send两个按钮,点击send按钮后,会发送login协议,服务端收到login协议后,会打印客户端传来的信息。

运行程序,点击按钮,服务端将会显示客户端login协议传入的用户名“LPY”,如下图所示。

客户端

服务端

客户端回显

在下面的代码中,服务端收到客户端的login协议后会恢复客户端loginBack协议,客户端收到loginBack协议后会弹出对话框。

运行程序,结果如下图所示。

欢迎关注笔者出版的书籍《Unity3D网络游戏实战》,本书充分地讲解怎样开发一款网络游戏,特别对网络框架设计、网络协议、数据处理等方面都有详细的描述,相信会是一本好书的。

作者:碧俐千仞
转载请注明出处:http://weidublog.com/index.php/2017/05/14/104/

 

 

没有评论

评论已关闭。