最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何将swift应用程序连接到socket io服务器

运维笔记admin12浏览0评论

如何将swift应用程序连接到socket io服务器

如何将swift应用程序连接到socket io服务器

我正在尝试将我的swift应用程序连接到我的Web套接字后端。在我的后端我使用node,express和socket.io。我的服务器运行正常,我可以连接到它并使用我的反应Web应用程序中的Web套接字。我正努力用swift来达到同样的效果。我正在使用socket.io-client-swift库进行连接。我的服务器是安全的,我将使用作为我的地址。

我的反应应用程序中的套接字连接如下所示:

const socket = io('', {
  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: "")!)
        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")
        }        
    }

}

我的错误日志如下所示:

LOG SocketIOClient{/}: Handling event: statusChange with data: [connecting, 2]
LOG SocketIOClient{/}: Joining namespace /
LOG SocketManager: Tried connecting socket when engine isn't open. Connecting
LOG SocketManager: Adding engine
LOG SocketManager: Manager is being released
LOG SocketEngine: Starting engine. Server: 
LOG SocketIOClient{/}: Client is being released
LOG SocketEngine: Handshaking
LOG SocketEnginePolling: Doing polling GET .io/?transport=polling&b64=1
ERROR SocketEnginePolling: Error during long poll request
ERROR SocketEngine: Error
LOG SocketEngine: Engine is being released

我对socket的服务器初始化如下:

// Add websocket
var allowedOrigins = "http://localhost:*";
const socketConfig = {
  origins: allowedOrigins,
  pingTimeout: 60000
}
io = require('socket.io')(server, socketConfig);
回答如下:

我想出了这个问题。在服务器上我只允许在socket配置中使用localhost。这适用于本地运行的react应用程序。当我删除原点时,一切正常。套接字服务器初始化如下所示:

// Add websocket
var allowedOrigins = "http://localhost:*";
const socketConfig = {
  // origins: allowedOrigins, -- Removed this line
  pingTimeout: 60000
}
io = require('socket.io')(server, socketConfig);
发布评论

评论列表(0)

  1. 暂无评论