如何将Swift应用程序连接到Socket IO服务器

时间:2019-02-16 13:10:32

标签: node.js swift socket.io

我正在尝试将我的Swift应用程序连接到Web套接字后端。在后端,我正在使用node,express和socket.io。我的服务器运行正常,我可以连接到它并使用我的React Web应用程序中的Web套接字。我正在努力迅速达到相同的结果。我正在使用socket.io-client-swift库进行连接。我的服务器是安全的,我将使用SHAPE APPEND NEW adVarChar(8) As INVNO, NEW adVarChar(8) As iCP, ((SHAPE APPEND NEW adVarChar(8) As INVNO,NEW adVarChar(8) As iCP...) AS Trans RELATE INVNO TO INVNO,iCP TO iCP) 作为我的地址。

我的React应用程序中的套接字连接如下:

SHAPE APPEND NEW DBTYPE_BSTR As INVNO, NEW DBTYPE_BSTR As iCP,
((SHAPE APPEND NEW DBTYPE_BSTR As INVNO,NEW DBTYPE_BSTR As iCP...)
AS Trans RELATE INVNO TO INVNO,iCP TO iCP)

我的快速连接代码如下:

https://test.api.com

我的错误日志如下:

const socket = io('https://test.api.com', {
  secure: true,
  forceNew: true,
  reconnectionAttempts: 'Infinity',
  timeout: 30000,
  transports: ['websocket']
})

我对套接字的服务器初始化如下:

class Socket: NSObject {

    static let shared = Socket()

    override init() {
        super.init()

        let manager = SocketManager(socketURL: URL(string: "https://test.api.com")!)
        manager.setConfigs([.secure(true), .log(true)])

        log.warning("Setting up socket connection")
        let socket = manager.defaultSocket

        socket.on(clientEvent: .connect) {data, ack in
            log.warning("Socket connected")
        }

        log.warning("Connecting...")
        socket.connect(timeoutAfter: 15) {
            log.warning("Can't connect to socket server")
        }        
    }

}

1 个答案:

答案 0 :(得分:1)

我发现了问题。在服务器上,我只允许在套接字配置中使用本地主机。这在本地运行的React应用程序上有效。当我删除起源时,一切正常。套接字服务器初始化如下所示:

NSDictionary *dictionary = @{@"login": userName, @"password": userPassword};
NSData *body = [dictionary percentEncodedData];