重新连接HRC +

由于SmartFoxServer 2X版本2.5(及更高版本)引入了高弹性连接系统(HRC +)的改进版本,使得玩家可以在突然断开连接后重新加入服务器,而不会丢失其当前状态。

在本文中,我们将讨论HRC +可以节省大量开发工作的方式,技术方面的做法以及如何配置和测试。
为什么我断开连线?

在本地网络开发和测试时,意外的断开连接是非常罕见的事情,但是当我们终于上网时,可能会发生几个可能会影响游戏连接的恶作剧。

连接在没有通知的情况下丢弃的主要原因是交通拥堵。播放器连接通常通过几十个网络节点到达目的地,并且这些链接中的每一个都可能是潜在的故障点。事实上,如果这些路由器和网关中的任何一个都被流量压倒了,它们可能会响应太慢,被迫丢弃数据包或重置,从而导致失速并最终断开连接。

如果我们添加混合WIFI和移动连接,场景变得更加细腻,因为信号强度的下降可能导致与游戏服务器的突然断开。

所有这些情况主要在操作系统的TCP堆栈中处于低级别,TCP堆栈又会在应用程序级别调度其他程序可以做出的响应。 SmartFoxServer 2X在这些方面也不例外,它在很大程度上取决于那些低级别的通知。

在这篇文章的后面,我们将看到如果某些事件没有及时解决,可能会发生什么。
»HRC +救援

HRC +是SmartFoxServer 2X提供的独特功能,可帮助构建更强大的多用户游戏,让玩家透明地返回游戏而不会失去其状态。

下图说明当播放器突然断开与服务器的连接时会发生什么:

从左侧开始,我们有三个用户连接到SFS2X,所有玩家一起玩在同一个区域中的玩家A,B,C。突然用户B失去连接,服务器上的Player对象被冻结,所有发送给他的消息都存储在队列中。

同时,客户端API正在尝试建立一个新的连接,而其他玩家可以继续他们的游戏,知道用户B试图跳回来。

在图的右侧,玩家B终于重新连接。新的会话与旧的Player对象链接,客户端被更新为所有排队的消息,其他玩家被通知B已经回来了。令人兴奋的部分是,在所有这些阶段,游戏流程不会中断,并且重新连接的所有复杂性都从开发人员隐藏起来。
»可能会出错

并不是所有的断开连接都相等。断断续续可能存在一段时间的少数情况,不能触发重连系统。

我们将文档的整个部分专用于Ghost Connections的问题,这是我们调用“半封闭”TCP连接的方式。没有太多的细节,TCP协议采用多个消息交换来断开客户端和服务器。在网络突然不可用的情况下,无法完成此交换,并且TCP连接可以在一段时间内保持在“等待”状态。

这种情况的典型原因是从计算机拉出网络电缆或WIFI接口或移动连接中的信号突然丢失。在所有这些情况下,最终可能会出现一个ghost连接,TCP连接仍然在等待关闭操作完成。

为何HRC +功能如此相关?这是至关重要的,因为在此状态下的TCP套接字将不会在应用程序级别通知任何断开连接事件,因此SmartFoxServer将不会意识到此新条件。最终,TCP超时或SmartFox空闲套接字超时将触发(取决于更早的启动),并且将断开连接事件。
不要拔掉电源
»正确的断开连接测试方法

反向拔除网络电缆或关闭WiFi连接不会产生可用于测试的突然断开连接。

事实上,您可以使用Netstat实用程序(Windows,Mac和Linux上可用)在拔下电缆之前和之后监视计算机的连接,并且您会惊讶地发现没有任何变化!

重要信息:请勿尝试通过拔出以太网电缆或关闭WIFI连接来测试重新连接系统。两个操作都不会终止您当前的套接字连接,因此断开事件将永远不会被触发。

而是按照我们在下面部分链接的题为“连接阶段”的文章中提供的说明。
»进一步阅读

有关如何配置和测试HRC +的更多信息,请参见“开发基础”部分中的连接阶段。
为了进一步了解TCP / IP如何处理断开连接,您可以阅读此外部文章

翻译自http://docs2x.smartfoxserver.com/GettingStarted/reconnection-hrc-plus

重新连接HRC+ SmartFoxServer 2X相关推荐

  1. SmartFoxServer 2X Room的加入與建立

    SmartFoxServer 2X Room的加入與建立 On 2011/08/03, in SmartFoxServer 2X, by Allen Room的型態有二種 靜態Room:Zone Co ...

  2. SmartFoxServer 2X管理工具

    管理工具(也称为AdminTool)是SmartFoxServer 2X远程监控和管理的强大应用程序.其主要特点是: 所有服务器设置的高级视觉配置,包括区域和房间; 强大的运行时监控工具,可以检查实时 ...

  3. SmartFoxServer 2X 简介

    1. 什么是SmartFoxServer 2X,它是用来干嘛的 ? 系统我就不详细地介绍了,简单地说,sfs2x 是一个多用户网络数据交换服务平台.多用于简易游戏开发中. 2. SmartFoxSer ...

  4. SmartFoxServer 2X 笔记一:login request (转)

    这里是原文链接 这里只大概讲一下使用到的 API 和登录时的一些要点,其他具体的细节还是需要自己看官方文档的. 前端 Flash 使用到的登录请求 API 是: LoginRequest(userNa ...

  5. SmartFoxServer如何使用文档和示例

    如何使用文档和示例 本文档提供了如何从提供的SmartFoxServer 2X(aka SFS2X)文档获得最佳的快速教程.我们的第一个建议是在进行示例和技术文档之前咨询本节中提供的文章. 无论你是一 ...

  6. SmartFoxServer2.0下第一人称射击游戏的简单配置

    SmartFoxServer 2X平台的安装非常简单,他的操作过程只需要几步. 1.首先下载,和您平台对应的SFS版本,我们以WINXP为例,下载后安装在你C盘或D盘的Program Files\SF ...

  7. smartfoxserver java客户端_SmartFoxServer之服务器篇一

    关于SmartFoxServer的基础介绍,请移步 http://www.cnblogs.com/winson-w/p/3555106.html 该文章已经对SmartFoxServer(以下简称SF ...

  8. Smartfox Server 2x 在 CentOS6.3 上的搭建

    Smartfox Server 2x 在 CentOS6.3 上的搭建 1.  下载SFS2X Linux/Unix 32bit installer Download Linux/Unix 64bit ...

  9. signalr收不到服务器的信息,重新连接的客户端SignalR没有收到消息 - javascript

    我在作为服务运行的服务器上运行了SignalR Hub.由于任何原因,此服务器可能会因断电,正在更新(我们使用八达通自动更新)或其他原因而停止运行. 如果我有一个用户连接到此服务,则将消息发送到服务器 ...

最新文章

  1. 《软件定义网络:基于OpenFlow的SDN》一一2.5 本章总结
  2. python自动化--语言基础一数据类型及类型转换
  3. java文件输入与输出_java文件输入和输出
  4. 关于Xcode7中添加不了libresolv.dylib等类似库的问题
  5. socket编程(四)
  6. tensorflow之矩阵相乘与matmul
  7. 电脑大小写怎么切换_电脑键盘上的三个灯都起什么作用
  8. uniapp运行 pages.json解析失败,args (“--max-old-space-size=2048“, “E:/QMDownload/SoftMgr/HBuilderX/plugins/
  9. IDEA打包jar-解决错误: 找不到或无法加载主类 main
  10. win7 计算机定时关机脚本,Win7定时关机命令 win7系统怎么设置定时关机
  11. 怎么使用outlook发送邮件?outlook群发邮件怎么撤回?
  12. 16个最新创意品牌Logo设计 —— “形神”兼具的设计,方显高级和质感
  13. 迷宫花坛(garden)
  14. (六)苏世民:我的经验和教训:决策(12)
  15. createCaptureSession()
  16. 测试用例的设计方法--比较全的
  17. 数学建模方法总结(matlab)
  18. 2022-08-18 mysql/stonedb-aggregate场景group by分析
  19. BIT2022年春软件需求工程和UML建模 - 智慧校园数据管理系统 - Final
  20. python收音机_FM收音机入门,以及Python实现FM调制解调

热门文章

  1. 给学妹的 Java 学习路线
  2. Python爬取豆瓣热映电影
  3. 源代码 Source Code
  4. 推特Twitter数据采集(内容,粉丝,关键字等)
  5. NetTime的使用方法
  6. Popov超稳定性在模型参考自适应(MRAS)中的应用
  7. 【国君非银】TAMP研究之一:它的美国起源史
  8. 编程语言与程序的运行
  9. 迈瑞监护仪对接(iMEC、PM、D系列等)
  10. 不动点迭代法(Fixed Point Iteration)迭代求根的python程序