位置: 编程技术 - 正文

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中的包管理工具是什么)

  • 企业的税务风险研究怎么写
  • 旧机器设备出口
  • 出口退还增值税消费税的,是否退还教育费附加
  • 补充养老保险补充医疗保险税前扣除比例
  • 1号没有抄税可以补税吗
  • 累计折旧贷方余额表示
  • 自然人报税系统怎么进入单位报税系统
  • 公司与公司之间的欠款怎么要
  • 无形资产减值损失一经确认在以后期间不得转回
  • 营业执照经营范围劳务怎么写
  • 部门会议要点
  • 企业进货不收发票怎么做帐?
  • 公司没有收入没开发票
  • 研发准备金期末余额帐务处理是怎样的?
  • 我国的税收管理体制和方向
  • 应缴纳增值税计算公式
  • 建筑行业预收账款
  • 应交税费应交增值税
  • 建筑公司资源税的征税
  • 递延所得税资产怎么计算
  • 发改委规定电网企业职工福利费
  • 典当行的账务处理会计分录大全
  • 贸易公司购入商品会计分录
  • 财务做哪些工作
  • 租赁发票交税交多少
  • 文化事业建设费税收优惠政策2023
  • 两年利润都为负数,如何计算完成率
  • 继承有个人所得税吗
  • 全免增值税企业所得税吗
  • 快启动u盘制作
  • 员工伙食费明细表
  • Win10 (21H1)Build 19043.1266更新补丁KB5005611正式版发布:附修复更新内容
  • macOS Big Sur 11.3新功能 为M1 Mac带来了iOS应用的手柄模拟功能
  • 修改linux启动项
  • 企业信用贷款账户是什么
  • 什么是资产负债率,如何计算
  • 代理业务资产的意思
  • 关于固定资产抵扣的税务规定
  • 如何做世界上最小的遥控飞机
  • 企业所得税季度申报数据怎么来
  • Drömling湿地中的灰鹤,德国 (© Mike Friedrichs/Getty Images)
  • java前后端加密解密请求
  • 长期股权投资
  • 如何利用数据有效性制作单元格菜单
  • php禁用函数怎么删除
  • 企业在建工程领用原材料的会计分录
  • 运用java解决的实际问题
  • 织梦网站特有标识
  • 增值税普通发票查询真伪
  • 公用经费属于哪一类经费
  • 股票股利发放形式是什么
  • 车险代买的出了事故怎么办
  • 结构性存款是什么存款
  • 没有海关完税凭证怎么入账
  • 转让股权取得的收入是营业收入吗
  • 购进货物取得
  • mysql预编译原理
  • sqlserver查询语句大全讲解
  • redhat server
  • centos7 home
  • 设置共享文件夹win10
  • xp系统的电脑无法启动
  • linux系统中
  • centos清理缓存
  • speedmgr.exe - speedmgr是什么进程 有什么用
  • 在操作系统中如何创建一个新的用户
  • wind10怎么重置网络
  • windows8如何使用
  • win8 应用商店
  • python 编码声明
  • unity小例子
  • unity 优化
  • shell脚本 su
  • Unity3D的iTween
  • 安卓手机管家推荐
  • 前端闭包函数
  • Python黑魔法手册
  • 稳岗补贴是否需在企业所得税汇算时调增
  • 城建税教育费附加怎么做分录
  • 税控发票打印发票流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设