【问题标题】:Swift/iOS8: Create shared instance for websocket SocketIOCocoaSwift/iOS8:为 websocket SocketIOCocoa 创建共享实例
【发布时间】:2015-03-31 22:00:56
【问题描述】:

我正在尝试使用此处找到的 SocketIOCocoa 库为 websocket 客户端创建共享实例: https://github.com/shuoli84/SocketIOCocoa

当在 ViewController 中使用该库来创建 websocket 客户端的新实例时,该库工作得非常好——但我不知何故无法设置共享实例。我尝试了什么:

import Foundation
import Alamofire

public class WebSocketClient:SocketIOSocket {


    public var WebSocket:SocketIOClient!

    func myWebSocketClient() -> SocketIOClient {

        if WebSocket != nil {
            return WebSocket
        } else {
        let uri = "\(CurrentConfiguration.serverURL)/socket.io/"

        var client = SocketIOClient(uri: uri, reconnect: true, timeout:3000)
        client.open()

        return client
        }
    }

由于我对协议/共享实例的使用非常陌生,我不知道我是否走在正确的轨道上。至少当我想将它用作时它不起作用: var foo = WebSocketClient.myWebSocketclient()

这就是我在单个 VC 中的做法:

func newSocket() {

let uri = "\(CurrentConfiguration.serverURL)/socket.io/"

var client = SocketIOClient(uri: uri, reconnect: true, timeout:3000)
client.open()

var socket = client.socket("myNamespace") //join namespace


socket.event("customEvent", data: websocketRoomData){ (packet) -> Void in
                    }//emit event after join

socket.delegate = self
}


func socketOnEvent(socket: SocketIOSocket, event: String, data: AnyObject?) {

        switch event {
        case "returning from server event":
            println(event)
            let returnData = data as? NSArray

            //do stuff with return data

            doStuff(returnData!)

        default:
            println("Error: unrecognized Websockets Event received!")
    }
}

【问题讨论】:

    标签: ios swift websocket socket.io


    【解决方案1】:

    例如。 您可以在代码中的任何位置使用 SocketSingleton.call。

    让套接字:SocketSingleton = SocketSingleton.call

    socket.socketEmit()

    class SocketSingleton: NSObject {
    
    static let call = SocketSingleton()
    
    let socket = SocketIOClient(socketURL: NSURL(string:"url")!)
    
    override init() {
        super.init()
        addHandlers()
        socket.connect()
    }
    
    func addHandlers() {
        socket.on("message") { data, ack in
    
        }
    
        socket.on("reconnect") { data, ack in
    
        }
    
        socket.on("error") { data, ack in
    
        }
    
    }
    func socketEmit() {
        let msg = [:]
        var sendJson : NSString = ""
        do {
            let json = try NSJSONSerialization.dataWithJSONObject(msg, options: NSJSONWritingOptions.PrettyPrinted)
            let string = NSString(data: json, encoding: NSUTF8StringEncoding)
            sendJson = string! as NSString
        } catch let error as NSError {
            print(error.description)
        }
    
        socket.emit("message", sendJson)
    }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2015-04-07
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多