问题标签 [gksession]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
928 浏览

ios - 使用 GKSession 进行点对点时如何获得精确的时钟同步?

我制作了一个简单的游戏,它使用来自 GameKit 的 GKSession 连接到其他对等方。它很容易设置,但我发现了一些问题:

  • 延迟变化很大。有时消息会立即到达其他设备。有时,向其他对等方发送数据的延迟大于 1 秒。数据只是一个包含 10 个字符的字符串。

  • 我的游戏依赖于精确的时钟同步。游戏有音乐播放,当它没有在所有连接的设备上同时开始播放时听起来很奇怪。

我在文档中找不到有关如何同步计时的任何内容。问题是开始游戏的“主”码头立即开始播放音乐,然后所有其他码头稍后收到消息,因此延迟后开始播放。

然后我尝试在向所有码头发送开始消息后延迟播放游戏音乐,但有时延迟更低或更高,我无法获得良好的可靠同步。

是否有一个开源框架可以让点对点和时钟同步在 iOS 上更可靠、更容易使用?

0 投票
2 回答
537 浏览

iphone - 是否有更可靠的 GKSession 替代方案允许在 3 个以上设备之间进行 P2P?

有人指出卓悦更可靠。Bonjour 只有 WiFi,不支持蓝牙,不是吗?

必须有一种替代方案,GKSession将 Bonjour 和蓝牙的所有优点结合在一个简单易用的 API 中,但我找不到它。

对于一个玩家可以随时加入的游戏,我需要自动连接最多 8 台设备,而且GKSessionPeerToPeer 的总限制似乎是 3 台。

0 投票
1 回答
155 浏览

iphone - GKSession 调用是否阻塞了主线程?

我在技术说明TN2277中读到,当应用程序进入后台时,关闭各种网络套接字非常重要。这很可能还包括 GKSession。

他们说进入后台时需要一个过期处理程序,并且如果网络代码必须与其他对等点说“再见”,则必须异步调用它是很重要的。

那么 GKSession sendData 方法是异步的还是阻塞的?

0 投票
0 回答
117 浏览

iphone - 如果每个对等点都与其他对等点双向连接,是否有害?

我在对等模式下使用 GKSession,其中应用程序的实例既是服务器又是客户端。

我像这样连接到其他同行:

如果我有一台设备运行该应用程序,然后启动另一台运行该应用程序的设备,两台设备将看到对方并发送 -connectToPeer:withTimeout:。

我不明白的是,如果需要双向通信,两个希望相互连接的设备中只有一个发送 connectToPeer:withTimeout: 请求是否就足够了。

然后,我担心双向连接请求会造成麻烦。像这样盲目地这样做可以吗,还是我必须使用更复杂的检查,以便在一对对等点之间只建立一个连接?

编辑:测试显示一个对等点连接到另一个对等点就足够了。还测试了每个对等点是否会看到另一个对等点变得可用。所以我上面的代码会发出一个多余的连接请求。问题仍然存在,这是否对网络的稳定性和容量有害。

0 投票
1 回答
248 浏览

iphone - 如何正确处理 GKSession 的中断?

我的在线广播应用正在播放背景音乐。当用户听音乐并退出应用程序(进入后台)以查看其他位置时,我会拆除 GKSession。这是P2P模式。当用户返回应用程序时,我重新连接 GKSession。

这是正确的吗?如果有电话来电或发生其他中断怎么办?还要杀死 GKSession 并重新创建?

0 投票
2 回答
385 浏览

iphone - 超过 3 个客户端的 GameKit 客户端/服务器问题

我目前正在构建一个 iOS 应用程序,它允许用户使用 GameKit 与朋友分享内容。一台设备成为服务器,然后他们可以将内容发送到连接的对等方。这在 4 个连接的客户端之前运行良好。

第 4 个客户端始终可以加入并接收一个文件,但随后它似乎忽略了所有其他数据包并崩溃,没有产生错误或崩溃日志(必须强制关闭应用程序)。

在开始这个项目之前,我读到有几个开发人员在 P2P 中遇到了超过 4 个连接的问题,但没有关于客户端服务器的报告(我读到了多达 16 个玩家)。

有人知道吗?

0 投票
1 回答
318 浏览

ios - GKSession 与超过 2 个设备断开连接

我们正在使用 GKSession 来设置游戏。这适用于 2 台设备,其中一台设备使用 GKSessionModeServer 设置,另一台使用 GKSessionModeClient。

但是,一旦我们有 2 个或更多客户端(3 个设备;1 个主机和 2 个客户端),其中一个客户端将在某个时候随机断开连接。没有调用错误处理程序(didFailWithError 或 connectionWithPeerFailed),只有服务器和客户端上的 didChangeState。断开连接通常在一分钟内发生,有时更短。

所有设备(2 个 iPhone 和 1 个模拟器)都在同一个无线网络上。一台物理设备运行iOS6.0.1,另一台运行5.1.1,在连接模拟器时都可以保持连接。只有 3 台设备(2 台真实设备,1 台模拟设备)才会出现问题。

任何帮助将不胜感激。

0 投票
2 回答
191 浏览

iphone - GameKit 多线程发送可能吗?

我正在开发一个可以向用户发送文件和操作的应用程序。用户可以随时从服务器请求文件(客户端服务器模型)。有时文件可能相当大(例如 10 mb),在发送时可能会延迟其他小动作发送给连接的用户。似乎 Gamekit 有一个用于发送的线程和一个用于接收的单独线程。

我想知道是否可以有一个额外的发送线程来确保较小的操作数据包不必等待发送大文件。我试图创建一个具有盛大中央调度的队列,但不幸的是,发送似乎仍然只使用一个线程。

我想有可能让单独的较小的动作数据包“中断”大文件的发送,但这会相当复杂,我想知道是否有更简单的方法。

0 投票
1 回答
157 浏览

xcode - 在 ipad 和模拟器之间测试 GKSession (iOS 6)

我正在尝试在模拟器和 ipad 之间启动 GKSession。但我认为他们甚至没有连接,因为我尝试分别列出客户端和服务器。设备和模拟器上均未显示任何内容。我正在尝试这个 Ray Wenderlich 的教程http://www.raywenderlich.com/12735/how-to-make-a-simple-playing-card-game-with-multiplayer-and-bluetooth-part-1甚至是第二个教程的一部分。好吧,我尝试下载他们的项目并尝试运行它。它没有列出客户端和服务器,所以我假设它根本没有连接。我在想也许是因为我在 iOS6.0.1 上使用它?你认为它的版本问题?

我没有在这里发布任何代码,因为我只是想按照上面的教程进行操作。当然没有其他错误..它们运行得很好,只是没有列出客户端和服务器。

任何帮助将不胜感激。

0 投票
1 回答
289 浏览

iphone - 确定 GKSession 蓝牙设备何时超出范围

我正在使用GKSession, GKSessionDelegate在多个 iX(iPod、iPad、iPhone 等)设备之间实现对等蓝牙连接。我想显示range中当前可用/连接的设备的列表。

我目前依赖

- (void)session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)state

去做这个。不幸的是,当设备超出范围时,似乎无法可靠地调用此方法。是否有“更好”的方法来确定设备是否在范围内?

一些代码: