位置: 编程技术 - 正文

Nodejs实现多人同时在线移动鼠标的小游戏分享

编辑:rootadmin

推荐整理分享Nodejs实现多人同时在线移动鼠标的小游戏分享,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

最近因为项目需要,所以研究了一下nodejs的websocket实现,socket.io,这是nodejs后台应用websocket广泛使用的框架。

准备工作

1.安装socket.io,使用命令npm install socket.io2.windows系统的话,需要vc编译环境,因为安装socket.io的时候,会编译vc代码

游戏基本原理

1.服务器监听客户端的连接2.客户端连接成功时候,绑定页面移动鼠标事件,事件里处理发送当前坐标给服务器3.服务器保存一个全局的坐标对象,并以客户端唯一编号为键值4.有新连接来的时候,把坐标广播给其它客户端5.客户端断开连接的时候,服务端删除它的坐标信息,并广播给其它客户端

开始实现服务端代码

scoket.io建立服务器监听的时候,需要依赖一个http连接,用来处理升级协议用,所以也需要一个http模块,代码如下:

然后定义一个全局的坐标对象

开始监听客户端的连接,并新增广播函数(其实可用socket.io自带的广播方法io.sockets.broadcast.emit),核心代码如下:

Nodejs实现多人同时在线移动鼠标的小游戏分享

分析上面的代码,关键点在于

1.新的客户端连接成功,发送其它客户端的坐标信息2.客户端更新坐标信息的时候,通知其它客户端3.客户端断开连接,通知其它客户端4.广播消息类型分为修改坐标与移除坐标

编写客户端html页面

由于socket.io是自定义的框架,所以客户端需要引用socket.io.js,这个js可以从socket.io模块里查找,路径一般为node_modulessocket.ionode_modulessocket.io-clientdist,里面有合并与压缩两个版本,开发的时候可以用合并版.

完整代码如下:

页面中的img/cursor.png,可以这里找到,cursor.png,这里也有很多其它的鼠标图标,前端的原理比较简单,简单的分析如下

1.连接成功时,绑定页面mousemove事件,里面处理发送新坐标消息2.收到消息根据消息类型,处理是修改其它客户端消息,还是移除其它客户端消息3.定义添加其它客户端cursor图标与移除cursor图标4.处理客户端异常消息,并添加断开连接,以让服务端移除坐标信息

运行例子

1.保存服务器代码为io_multigame.js2.保存客户端代码为io_multigame.html3.运行服务器代码node io_multigame.js4.打开多个io_multigame.html页面,即可看到效果

总结

写的比较随意,参考了了不起的nodejs,这是一本好书,想了解nodejs的朋友们,可以看看这本书。

node.js中的dns.getServers方法使用说明 方法说明:返回当前正在使用的ip地址,以字符串形式返回语法:dns.getServers()接收参数:无源码:exports.getServers=function(){returncares.getServers();};

node.js中的events.EventEmitter.listenerCount方法使用说明 方法说明:返回注册了指定事件的监听器数量。语法:EventEmitter.listenerCount(emitter,event)接收参数:emitter事件发射器event事件例子:if(events.EventEmitter.listene

node.js中的path.resolve方法使用说明 方法说明:将参数to位置的字符解析到一个绝对路径里。语法:path.resolve([from...],to)由于该方法属于path模块,使用前需要引入path模块(varpath=require(path)

标签: Nodejs实现多人同时在线移动鼠标的小游戏分享

本文链接地址:https://www.jiuchutong.com/biancheng/374272.html 转载请保留说明!

上一篇:Nodejs实现的一个静态服务器实例(nodejs最佳实践)

下一篇:node.js中的dns.getServers方法使用说明(Node.js中的包管理工具是什么)

  • 出口货物离岸价格
  • 税控盘服务商
  • 收了押金不退
  • 员工餐补是放入福利费吗?
  • 负利润的话小型微利企业减免企业所得税吗
  • 印花税销售额的多少
  • 产权转移书据印花税分录
  • 当期计提加计抵减额如何确定
  • 其他收益科目账务处理
  • 出租固定资产取得的净收益计入什么科目
  • 企业股东投资
  • 异地经营需要办什么税务手续?
  • 公司买手机可以开票抵扣吗
  • 企业发工资哪些需要缴个人所得税?
  • 合伙企业个人所得税经营所得税率
  • 个人所得税app入职时间不对
  • 固定资产减值账务处理怎么做
  • 什么情况下要交增值税
  • 收到车险理赔款会计分录
  • 同一控制下企业合并权益抵消
  • 旧物品翻新
  • 垃圾费随水费征收
  • 小规模纳税人增值税3%减按1%
  • 如何维护电脑系统安全?
  • 固定资产进项发票
  • Yosemite使用技巧 如何使用Yosemite mac信息功能共享电脑屏幕教程
  • 公司撤股需走什么程序
  • 注销公司如何注销
  • 贷方发生额是什么意思是利息吗
  • 寿命最短的苹果手机
  • 企业未实际出资
  • 出口货物视同内销征税的会计核算
  • 在途物资什么类科目
  • 汇总纳税企业总分机构信息备案
  • 固定资产没有发票可以计提折旧吗
  • 考研408怎么样
  • php打包phar
  • 设计公司发生的费用
  • 商贸公司会计成本核算
  • db2 -x
  • mongodb自增主键
  • 开增值税发票可以做三方协议吗?
  • 利润表和资产负债表
  • 汽车维修企业怎么认定小微企业
  • 金蝶如何新增客户
  • 关于种植养殖的手抄报
  • 运费与快递费的区别在哪
  • 两处以上取得工资如何申报个税
  • 企业所得税征税范围是
  • 出纳需要填写会计凭证吗
  • 去年亏损今年盈利同比怎么算
  • 行政事业单位拨款请示在前还是发票在前
  • 固定资产清理如何做账
  • 英飞拓拟2.1亿出售子公司股权
  • 2020年扶贫拨款
  • 海关进口增值税专用缴款书在哪里打印
  • 收到承兑汇票如何写收据
  • 分期收款销售的会计与纳税处理
  • 企业注销后账目如何处理
  • 低值易耗的管理制度
  • 发现以前的账做错了
  • mysql备份与恢复数据库
  • 除MSSQL数据库text字段中恶意脚本的删方法
  • 微软员工工资
  • linux详解
  • win7英语
  • windows8各个版本区别
  • linux挂载啥意思
  • 短信发送器
  • js圆形链
  • js的调试
  • js二分法排序递归
  • Javascript this 关键字 详解
  • Javascript Object.extend
  • 企业招用退役士兵
  • 国家税务总局上海市电子税务局
  • 四川省地税局地址
  • 纳税服务主要职责
  • 贵州税务举报
  • 1973年简并税制
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设