位置: 编程技术 - 正文

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%政策到什么时候
  • 企业所得税的会计处理
  • 土地税和房产税缴纳时间
  • 清税证明是什么要钱吗
  • 贷款利息是否能降低
  • 作废的发票验旧之后怎么领取新发票
  • 员工没工资,但缴纳了社保,需要申报吗
  • 测绘费发票需要备注么
  • 同一控制下的企业合并的会计核算方法
  • 银行转账结算的方式有哪些
  • 异地学习期间产生的餐费住宿费怎么做账?
  • 服装公司进布料一般进多少
  • 借款合同法律规定的表述
  • 增值税留抵的原因
  • 企业出口收汇核销怎么处理?
  • 出售车辆需要缴纳哪些税
  • 税务局每年都会查我公司虚开发票
  • 只开增值税普通发票,需要申报税务吗
  • 企业所得税计提分录怎么写
  • 成品油消费税征税
  • 服务费的发票
  • 置换补贴款
  • 对方公司已注销,我公司应付款怎样支付
  • 款已付发票未到怎么做结转成本
  • 税务机构
  • 不动产融资租赁服务属于租赁服务吗
  • 在建工程增值税可以抵扣吗
  • 上个月暂估这个月成本怎么调整
  • win11怎么用
  • 公司收到利息怎么记账
  • 电器维修公司买什么保险
  • 基金投资于什么
  • 在win7系统中将打开窗口拖到屏幕顶端
  • 实收资本可以大于注册资本嘛
  • PHP:iterator_to_array()的用法_spl函数
  • 运输发票符合什么要求
  • 耕地开垦费计入土地成本吗
  • 存货的期末计价方法是遵循哪个信息质量原则
  • 解决科学文化领域的矛盾应坚持的方针是
  • php常见的错误级别
  • web服务器的搭建与应用
  • phpmyadmin版本
  • 餐饮定额发票能报销吗怎么报销
  • 钉钉的组织在线怎么设置
  • 前端image
  • 特殊动产的一物数卖履行顺序
  • webserviceclient
  • 增值税专用发票和普通发票的区别
  • 商场返点怎么核算
  • 结转清理损失会计分录
  • python动态强类型语言
  • 进项税额转出更正申报
  • ms-sql-s
  • MySQL里Create Index 能否创建主键 Primary Key
  • acca考试安排及时间
  • 销售商品返还现金
  • 固定资产属于净资产指的是什么
  • 政府扶持资金的优缺点
  • 净资产少于1元
  • 逾期的押金计入什么科目
  • 税交多了可以退吗
  • 附加税减免需要转营业外收入吗
  • 来料加工企业的辅助材料自购怎开销售发票
  • centos6.2安装
  • Advanced Pagination for MySQL(mysql高级分页)
  • win10预览版21390
  • Fedora Core 4.0 安装图解
  • 如何关闭windows更新
  • Win7系统怎么打开文件后缀名
  • win10安装不了itunes怎么办
  • win7怎么设置鼠标双击打开
  • javascript数据结构与算法项目计算找零
  • linux u+s
  • 排序方法python
  • js拖拽元素到另一个元素
  • react jss
  • jquery配合.NET实现点击指定绑定数据并且能够一键下载
  • android线程状态
  • 地税局工作人员工资标准多少
  • 小规模纳税人的认定标准是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设