迁移到 Swift 2 后,Pusher Websocket 未连接
Pusher Websocket not connecting after migration to Swift 2
我在大约一个月前用 Xcode 6 制作的应用程序中使用了 Starscream 和 Pusher-swift,一切正常,Pusher 已连接并能够接收消息。
在 Xcode 更新为 7 之后,因为我忘记关闭计算机,并且在我花了一周时间整理了大约 19375891237849 个错误之后,现在我卡在了应用程序的 Websocket 部分,这只是不想连接。
没有抛出任何错误。 Pusher 认为它已连接(PusherConnection.connected 设置为 true)但它无法订阅任何频道并且没有弹出错误。
我正在查看 Starscream 代码,似乎无法弄清楚发生了什么。
有没有人看到 Xcode 7 发生这种情况?
是否有默认阻止 websocket 的设置(例如 NSAllowsArbitraryLoads 设置允许通过 HTTP 加载对象)? (不是我可以想象为什么苹果会做这样的事情,也许他们开始从微软或其他公司招聘开发人员)。
问题出在 PusherSwift 中:
private func handleConnectionEstablishedEvent(json: PusherEventJSON) {
if let data = json["data"] as? Dictionary<String, AnyObject> {
if let socketId = data["socket_id"] as? String {
//if let connectionData = getPusherEventJSONFromString(data), socketId = connectionData["socket_id"] as? String { // this will fail silently.
self.connected = true
self.socketId = socketId
for (_, channel) in self.channels.channels {
if !channel.subscribed {
if !self.authorize(channel) {
print("Unable to subscribe to channel: \(channel.name)")
} else {
print("Subscribed to \(channel.name)")
}
}
}
} else {
print("No connection data 2")
}
} else {
print("No connection data 1")
}
}
我在大约一个月前用 Xcode 6 制作的应用程序中使用了 Starscream 和 Pusher-swift,一切正常,Pusher 已连接并能够接收消息。
在 Xcode 更新为 7 之后,因为我忘记关闭计算机,并且在我花了一周时间整理了大约 19375891237849 个错误之后,现在我卡在了应用程序的 Websocket 部分,这只是不想连接。
没有抛出任何错误。 Pusher 认为它已连接(PusherConnection.connected 设置为 true)但它无法订阅任何频道并且没有弹出错误。
我正在查看 Starscream 代码,似乎无法弄清楚发生了什么。
有没有人看到 Xcode 7 发生这种情况?
是否有默认阻止 websocket 的设置(例如 NSAllowsArbitraryLoads 设置允许通过 HTTP 加载对象)? (不是我可以想象为什么苹果会做这样的事情,也许他们开始从微软或其他公司招聘开发人员)。
问题出在 PusherSwift 中:
private func handleConnectionEstablishedEvent(json: PusherEventJSON) {
if let data = json["data"] as? Dictionary<String, AnyObject> {
if let socketId = data["socket_id"] as? String {
//if let connectionData = getPusherEventJSONFromString(data), socketId = connectionData["socket_id"] as? String { // this will fail silently.
self.connected = true
self.socketId = socketId
for (_, channel) in self.channels.channels {
if !channel.subscribed {
if !self.authorize(channel) {
print("Unable to subscribe to channel: \(channel.name)")
} else {
print("Subscribed to \(channel.name)")
}
}
}
} else {
print("No connection data 2")
}
} else {
print("No connection data 1")
}
}