Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Node.js和Swift服务器的Socket.IO是否未检测到连接?[即将颁发]_Javascript_Node.js_Swift_Socket.io_Nodejs Server - Fatal编程技术网

Javascript 使用Node.js和Swift服务器的Socket.IO是否未检测到连接?[即将颁发]

Javascript 使用Node.js和Swift服务器的Socket.IO是否未检测到连接?[即将颁发],javascript,node.js,swift,socket.io,nodejs-server,Javascript,Node.js,Swift,Socket.io,Nodejs Server,当我尝试在按下按钮时运行SocketTutorialManager.init()时,初始化器中的不同函数应该会运行,但它们不会运行,而是会将以下内容打印到Xcode控制台: 'sockettest[70290:1461156] [] nw_protocol_get_quic_image_block_invoke dlopen libquic failed' 我的桌面上有一个app.js文件,看起来像: const express = require('express'); const app

当我尝试在按下按钮时运行SocketTutorialManager.init()时,初始化器中的不同函数应该会运行,但它们不会运行,而是会将以下内容打印到Xcode控制台:

'sockettest[70290:1461156] [] nw_protocol_get_quic_image_block_invoke dlopen libquic failed'
我的桌面上有一个app.js文件,看起来像:

const express = require('express');
const app = express();
const http = require('http').Server(app);
const io = require('socket.io')(http);
const port = process.env.PORT || 3000;

app.use(express.static(__dirname + '/public'));

function onConnection(socket){
  console.log('a user connected');
  socket.on('disconnect', onDisconnection);
}

function onDisconnection(socket){
  console.log('a user disconnected');
}

io.on('connection', onConnection);

http.listen(port, () => console.log('listening on port ' + port));
import SwiftUI
import SocketIO

struct ContentView: View {
var body: some View {
    Button("Click Me") {
        PDSocketManager.shared.establishConnection()
    }
}
}

class PDSocketManager: NSObject {

class var shared: PDSocketManager {
struct Static{
    static let instance = PDSocketManager()
}
return Static.instance
}

var socket: SocketIOClient?
fileprivate var manager: SocketManager?

fileprivate override init(){}

func establishConnection(_ completion: (() -> Void)? = nil) {
let socketUrlString: String = "http://localhost:3001/socket.io"
self.manager = SocketManager(socketURL: URL(string: socketUrlString)!, config: [.log(true), .reconnects(true), .extraHeaders(["header": "customheader"])])
self.socket = manager?.defaultSocket
self.socket?.connect()

self.socket?.once(clientEvent: .connect, callback: { (data, emitter) in
    print("\n\n\n connection done!! \n\n\n")
    if completion != nil{
        completion!()
    }
})
}

func connect()  {
socket?.connect()
print("should've socket connected here")
}

func disconnect()  {
socket?.disconnect()
}

func checkSocktConnect() -> Bool {
if let myManager = self.manager{
    if myManager.status == SocketIOStatus.connected{
      return true
    } else {
        self.socket?.connect()
        return false
    }
} else{
    return false
}
} }
我还在桌面上运行了一个npm init,使用了一系列默认设置,然后通过package.json文件导入节点依赖项express*和socket.io*

我的雨燕看起来像:

const express = require('express');
const app = express();
const http = require('http').Server(app);
const io = require('socket.io')(http);
const port = process.env.PORT || 3000;

app.use(express.static(__dirname + '/public'));

function onConnection(socket){
  console.log('a user connected');
  socket.on('disconnect', onDisconnection);
}

function onDisconnection(socket){
  console.log('a user disconnected');
}

io.on('connection', onConnection);

http.listen(port, () => console.log('listening on port ' + port));
import SwiftUI
import SocketIO

struct ContentView: View {
var body: some View {
    Button("Click Me") {
        PDSocketManager.shared.establishConnection()
    }
}
}

class PDSocketManager: NSObject {

class var shared: PDSocketManager {
struct Static{
    static let instance = PDSocketManager()
}
return Static.instance
}

var socket: SocketIOClient?
fileprivate var manager: SocketManager?

fileprivate override init(){}

func establishConnection(_ completion: (() -> Void)? = nil) {
let socketUrlString: String = "http://localhost:3001/socket.io"
self.manager = SocketManager(socketURL: URL(string: socketUrlString)!, config: [.log(true), .reconnects(true), .extraHeaders(["header": "customheader"])])
self.socket = manager?.defaultSocket
self.socket?.connect()

self.socket?.once(clientEvent: .connect, callback: { (data, emitter) in
    print("\n\n\n connection done!! \n\n\n")
    if completion != nil{
        completion!()
    }
})
}

func connect()  {
socket?.connect()
print("should've socket connected here")
}

func disconnect()  {
socket?.disconnect()
}

func checkSocktConnect() -> Bool {
if let myManager = self.manager{
    if myManager.status == SocketIOStatus.connected{
      return true
    } else {
        self.socket?.connect()
        return false
    }
} else{
    return false
}
} }
更新:

这是使用Parth的解决方案记录套接字时的Xcode输出:

2021-03-02 08:47:41.669119-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: statusChange with data: [connecting, 2]
2021-03-02 08:47:41.669315-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Joining namespace /
2021-03-02 08:47:41.669392-0500 sockettest[992:1229560] LOG SocketManager: Tried connecting socket when engine isn't open. Connecting
2021-03-02 08:47:41.669435-0500 sockettest[992:1229560] LOG SocketManager: Adding engine
2021-03-02 08:47:41.672334-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Adding once handler for event: connect
2021-03-02 08:47:41.672357-0500 sockettest[992:1229845] LOG SocketEngine: Starting engine. Server: http://ip-address:3000/
2021-03-02 08:47:41.672444-0500 sockettest[992:1229845] LOG SocketEngine: Handshaking
2021-03-02 08:47:41.697783-0500 sockettest[992:1229845] LOG SocketEnginePolling: Doing polling GET http://ip-address:3000/socket.io/?transport=polling&b64=1
2021-03-02 08:47:41.877242-0500 sockettest[992:1229843] LOG SocketEnginePolling: Got polling response
2021-03-02 08:47:41.877321-0500 sockettest[992:1229843] LOG SocketEnginePolling: Got poll message: 0{"sid":"jNuRNaYlTU1zFzXAAAAA","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":5000}
2021-03-02 08:47:41.879715-0500 sockettest[992:1229843] LOG SocketEngine: Got message: 0{"sid":"jNuRNaYlTU1zFzXAAAAA","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":5000}
2021-03-02 08:47:41.886369-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: ping with data: []
2021-03-02 08:47:41.886399-0500 sockettest[992:1229843] LOG SocketEnginePolling: Doing polling GET http://ip-address:3000/socket.io/?transport=polling&b64=1&sid=jNuRNaYlTU1zFzXAAAAA
2021-03-02 08:47:41.886459-0500 sockettest[992:1229560] LOG SocketManager: Engine opened Connect
2021-03-02 08:47:41.886712-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Socket connected
2021-03-02 08:47:41.886870-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: statusChange with data: [connected, 3]
2021-03-02 08:47:41.887384-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: connect with data: ["/"]
2021-03-02 08:47:41.888137-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Removing handler with id: 05D5AFD6-5108-4EBB-A774-FB350D145FDA
2021-03-02 08:47:41.888195-0500 sockettest[992:1229843] LOG SocketEngine: Writing poll:  has data: false



 connection done!! 



2021-03-02 08:47:41.888598-0500 sockettest[992:1229843] LOG SocketEnginePolling: Sending poll:  as type: 2
2021-03-02 08:47:41.888905-0500 sockettest[992:1229843] LOG SocketEnginePolling: Created POST string: 1:2
2021-03-02 08:47:41.889085-0500 sockettest[992:1229843] LOG SocketEnginePolling: POSTing
2021-03-02 08:47:41.889134-0500 sockettest[992:1229843] LOG SocketEnginePolling: Doing polling POST http://ip-address:3000/socket.io/?transport=polling&b64=1&sid=jNuRNaYlTU1zFzXAAAAA
2021-03-02 08:47:41.900166-0500 sockettest[992:1229845] LOG SocketEngineWebSocket: Sending ws: probe as type: 2
2021-03-02 08:47:41.900316-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: websocketUpgrade with data: [["sec-websocket-accept": "3ydGn/18kSKfrJyp/ElciaZtQPI=", "upgrade": "websocket", "connection": "Upgrade"]]
2021-03-02 08:47:41.905261-0500 sockettest[992:1229840] LOG SocketEngine: Flushing probe wait
2021-03-02 08:47:41.906380-0500 sockettest[992:1229847] LOG SocketEnginePolling: Got polling response
2021-03-02 08:47:41.906615-0500 sockettest[992:1229847] LOG SocketEnginePolling: Doing polling GET http://ip-address:3000/socket.io/?transport=polling&b64=1&sid=jNuRNaYlTU1zFzXAAAAA
2021-03-02 08:47:41.914247-0500 sockettest[992:1229845] ERROR SocketEnginePolling: Error during long poll request
2021-03-02 08:47:41.914306-0500 sockettest[992:1229845] ERROR SocketEngine: Error
2021-03-02 08:47:41.914378-0500 sockettest[992:1229560] ERROR SocketManager: Error
2021-03-02 08:47:41.914382-0500 sockettest[992:1229845] LOG SocketEngine: Engine is being closed.
2021-03-02 08:47:41.914430-0500 sockettest[992:1229845] LOG SocketEnginePolling: Created POST string: 1:1
2021-03-02 08:47:41.914436-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: error with data: ["Error"]
2021-03-02 08:47:41.914626-0500 sockettest[992:1229845] LOG SocketEnginePolling: Doing polling POST http://ip-address:3000/socket.io/?transport=polling&b64=1&sid=jNuRNaYlTU1zFzXAAAAA
2021-03-02 08:47:41.915164-0500 sockettest[992:1229560] LOG SocketManager: Starting reconnect
2021-03-02 08:47:41.915268-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: statusChange with data: [connecting, 2]
2021-03-02 08:47:41.915373-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: reconnect with data: ["Error"]
2021-03-02 08:47:41.915468-0500 sockettest[992:1229560] LOG SocketManager: Trying to reconnect
2021-03-02 08:47:41.915559-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: reconnectAttempt with data: [-1]
2021-03-02 08:47:41.915747-0500 sockettest[992:1229844] LOG SocketEngine: Starting engine. Server: http://ip-address:3000/
2021-03-02 08:47:41.915920-0500 sockettest[992:1229844] LOG SocketEngine: Handshaking
2021-03-02 08:47:41.916043-0500 sockettest[992:1229844] LOG SocketEnginePolling: Doing polling GET http://ip-address:3000/socket.io/?transport=polling&b64=1
2021-03-02 08:47:41.916365-0500 sockettest[992:1229560] LOG SocketManager: Scheduling reconnect in 22.380244474166073s
2021-03-02 08:47:41.931050-0500 sockettest[992:1229845] LOG SocketEnginePolling: Got polling response
2021-03-02 08:47:41.931126-0500 sockettest[992:1229845] LOG SocketEnginePolling: Got poll message: 0{"sid":"GncBvYHRVuwBwT4qAAAB","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":5000}
2021-03-02 08:47:41.931198-0500 sockettest[992:1229845] LOG SocketEngine: Got message: 0{"sid":"GncBvYHRVuwBwT4qAAAB","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":5000}
2021-03-02 08:47:41.932181-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: ping with data: []
2021-03-02 08:47:41.932231-0500 sockettest[992:1229845] LOG SocketEnginePolling: Doing polling GET http://ip-address:3000/socket.io/?transport=polling&b64=1&sid=GncBvYHRVuwBwT4qAAAB
2021-03-02 08:47:41.932235-0500 sockettest[992:1229560] LOG SocketManager: Engine opened Connect
2021-03-02 08:47:41.932271-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Socket connected
2021-03-02 08:47:41.932314-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: statusChange with data: [connected, 3]
2021-03-02 08:47:41.932393-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: connect with data: ["/"]
2021-03-02 08:47:41.932697-0500 sockettest[992:1229845] LOG SocketEngine: Writing poll:  has data: false
2021-03-02 08:47:41.932972-0500 sockettest[992:1229845] LOG SocketEnginePolling: Sending poll:  as type: 2
2021-03-02 08:47:41.933028-0500 sockettest[992:1229845] LOG SocketEnginePolling: Created POST string: 1:2
2021-03-02 08:47:41.933490-0500 sockettest[992:1229845] LOG SocketEnginePolling: POSTing
2021-03-02 08:47:41.933547-0500 sockettest[992:1229845] LOG SocketEnginePolling: Doing polling POST http://ip-address:3000/socket.io/?transport=polling&b64=1&sid=GncBvYHRVuwBwT4qAAAB
2021-03-02 08:47:41.942594-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: websocketUpgrade with data: [["connection": "Upgrade", "upgrade": "websocket", "sec-websocket-accept": "pa1QhnQkCVWnN+kL1zMm+z0mEX4="]]
2021-03-02 08:47:41.942612-0500 sockettest[992:1229844] LOG SocketEngineWebSocket: Sending ws: probe as type: 2
2021-03-02 08:47:41.944832-0500 sockettest[992:1229840] LOG SocketEnginePolling: Got polling response
2021-03-02 08:47:41.945680-0500 sockettest[992:1229840] LOG SocketEnginePolling: Doing polling GET http://ip-address:3000/socket.io/?transport=polling&b64=1&sid=GncBvYHRVuwBwT4qAAAB
2021-03-02 08:47:41.946001-0500 sockettest[992:1229840] LOG SocketEngine: Flushing probe wait
2021-03-02 08:47:41.951337-0500 sockettest[992:1229845] ERROR SocketEnginePolling: Error during long poll request
2021-03-02 08:47:41.951418-0500 sockettest[992:1229845] ERROR SocketEngine: Error
2021-03-02 08:47:41.951495-0500 sockettest[992:1229560] ERROR SocketManager: Error
2021-03-02 08:47:41.951551-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: error with data: ["Error"]
2021-03-02 08:47:41.951683-0500 sockettest[992:1229845] LOG SocketEngine: Engine is being closed.
2021-03-02 08:47:41.951744-0500 sockettest[992:1229845] LOG SocketEnginePolling: Created POST string: 1:1
2021-03-02 08:47:41.952027-0500 sockettest[992:1229845] LOG SocketEnginePolling: Doing polling POST http://ip-address:3000/socket.io/?transport=polling&b64=1&sid=GncBvYHRVuwBwT4qAAAB
2021-03-02 08:47:41.952431-0500 sockettest[992:1229560] LOG SocketManager: Starting reconnect
2021-03-02 08:47:41.952545-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: statusChange with data: [connecting, 2]
2021-03-02 08:47:41.952657-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: reconnect with data: ["Error"]
2021-03-02 08:47:41.952759-0500 sockettest[992:1229560] LOG SocketManager: Trying to reconnect
2021-03-02 08:47:41.952856-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: reconnectAttempt with data: [-1]
2021-03-02 08:47:41.952988-0500 sockettest[992:1229560] LOG SocketManager: Scheduling reconnect in 17.378798001778488s
2021-03-02 08:47:41.953118-0500 sockettest[992:1229845] LOG SocketEngine: Starting engine. Server: http://ip-address:3000/
2021-03-02 08:47:41.953264-0500 sockettest[992:1229845] LOG SocketEngine: Handshaking
2021-03-02 08:47:41.953632-0500 sockettest[992:1229845] LOG SocketEnginePolling: Doing polling GET http://ip-address:3000/socket.io/?transport=polling&b64=1
2021-03-02 08:47:41.967543-0500 sockettest[992:1229843] LOG SocketEnginePolling: Got polling response
2021-03-02 08:47:41.967609-0500 sockettest[992:1229843] LOG SocketEnginePolling: Got poll message: 0{"sid":"dGUd1NjkROAspt3hAAAC","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":5000}
2021-03-02 08:47:41.967688-0500 sockettest[992:1229843] LOG SocketEngine: Got message: 0{"sid":"dGUd1NjkROAspt3hAAAC","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":5000}
2021-03-02 08:47:41.968632-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: ping with data: []
2021-03-02 08:47:41.968803-0500 sockettest[992:1229560] LOG SocketManager: Engine opened Connect
2021-03-02 08:47:41.968840-0500 sockettest[992:1229843] LOG SocketEnginePolling: Doing polling GET http://ip-address:3000/socket.io/?transport=polling&b64=1&sid=dGUd1NjkROAspt3hAAAC
2021-03-02 08:47:41.968850-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Socket connected
2021-03-02 08:47:41.968952-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: statusChange with data: [connected, 3]
2021-03-02 08:47:41.969027-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: connect with data: ["/"]
2021-03-02 08:47:41.969291-0500 sockettest[992:1229843] LOG SocketEngine: Writing poll:  has data: false
2021-03-02 08:47:41.969328-0500 sockettest[992:1229843] LOG SocketEnginePolling: Sending poll:  as type: 2
2021-03-02 08:47:41.969369-0500 sockettest[992:1229843] LOG SocketEnginePolling: Created POST string: 1:2
2021-03-02 08:47:41.970487-0500 sockettest[992:1229843] LOG SocketEnginePolling: POSTing
2021-03-02 08:47:41.970545-0500 sockettest[992:1229843] LOG SocketEnginePolling: Doing polling POST http://ip-address:3000/socket.io/?transport=polling&b64=1&sid=dGUd1NjkROAspt3hAAAC
2021-03-02 08:47:41.979132-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: websocketUpgrade with data: [["connection": "Upgrade", "upgrade": "websocket", "sec-websocket-accept": "qXRyRflDO2o0fPGslzplhreoK+8="]]
2021-03-02 08:47:41.979201-0500 sockettest[992:1229844] LOG SocketEngineWebSocket: Sending ws: probe as type: 2
2021-03-02 08:47:41.983692-0500 sockettest[992:1229845] LOG SocketEngine: Got message: 3probe
2021-03-02 08:47:41.983814-0500 sockettest[992:1229845] LOG SocketEngine: Received probe response, should upgrade to WebSockets
2021-03-02 08:47:41.983862-0500 sockettest[992:1229845] LOG SocketEngine: Upgrading transport to WebSockets
2021-03-02 08:47:41.983904-0500 sockettest[992:1229845] LOG SocketEnginePolling: Sending poll:  as type: 6
2021-03-02 08:47:41.984048-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: pong with data: []
2021-03-02 08:47:41.985388-0500 sockettest[992:1229840] LOG SocketEnginePolling: Got polling response
2021-03-02 08:47:41.985457-0500 sockettest[992:1229840] LOG SocketEngine: Switching to WebSockets
2021-03-02 08:47:41.985503-0500 sockettest[992:1229840] LOG SocketEngineWebSocket: Sending ws:  as type: 5
2021-03-02 08:47:41.985545-0500 sockettest[992:1229840] LOG SocketEngine: Flushing probe wait
2021-03-02 08:47:41.986551-0500 sockettest[992:1229840] ERROR SocketEngine: connection closed by server. code=1000, type=protocolError
2021-03-02 08:47:41.986866-0500 sockettest[992:1229560] ERROR SocketManager: connection closed by server. code=1000, type=protocolError
2021-03-02 08:47:41.987293-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: error with data: ["connection closed by server. code=1000, type=protocolError"]
2021-03-02 08:47:41.987443-0500 sockettest[992:1229560] LOG SocketManager: Starting reconnect
2021-03-02 08:47:41.987494-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: statusChange with data: [connecting, 2]
2021-03-02 08:47:41.987556-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: reconnect with data: ["connection closed by server. code=1000, type=protocolError"]
2021-03-02 08:47:41.987605-0500 sockettest[992:1229560] LOG SocketManager: Trying to reconnect
2021-03-02 08:47:41.987676-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: reconnectAttempt with data: [-1]
2021-03-02 08:47:41.987783-0500 sockettest[992:1229560] LOG SocketManager: Scheduling reconnect in 21.743261523169984s
2021-03-02 08:47:41.987783-0500 sockettest[992:1229850] LOG SocketEngine: Starting engine. Server: http://ip-address:3000/
2021-03-02 08:47:41.988147-0500 sockettest[992:1229850] LOG SocketEngine: Handshaking
2021-03-02 08:47:41.988303-0500 sockettest[992:1229850] LOG SocketEnginePolling: Doing polling GET http://ip-address:3000/socket.io/?transport=polling&b64=1
2021-03-02 08:47:42.005212-0500 sockettest[992:1229843] LOG SocketEnginePolling: Got polling response
2021-03-02 08:47:42.005291-0500 sockettest[992:1229843] LOG SocketEnginePolling: Got poll message: 0{"sid":"S0NLdRPF5uCHUoKaAAAD","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":5000}
2021-03-02 08:47:42.005704-0500 sockettest[992:1229843] LOG SocketEngine: Got message: 0{"sid":"S0NLdRPF5uCHUoKaAAAD","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":5000}
2021-03-02 08:47:42.006542-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: ping with data: []
2021-03-02 08:47:42.006648-0500 sockettest[992:1229560] LOG SocketManager: Engine opened Connect
2021-03-02 08:47:42.006989-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Socket connected
2021-03-02 08:47:42.007041-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: statusChange with data: [connected, 3]
2021-03-02 08:47:42.007084-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: connect with data: ["/"]
2021-03-02 08:47:42.007179-0500 sockettest[992:1229843] LOG SocketEnginePolling: Doing polling GET http://ip-address:3000/socket.io/?transport=polling&b64=1&sid=S0NLdRPF5uCHUoKaAAAD
2021-03-02 08:47:42.009173-0500 sockettest[992:1229843] LOG SocketEngine: Writing poll:  has data: false
2021-03-02 08:47:42.009252-0500 sockettest[992:1229843] LOG SocketEnginePolling: Sending poll:  as type: 2
2021-03-02 08:47:42.009302-0500 sockettest[992:1229843] LOG SocketEnginePolling: Created POST string: 1:2
2021-03-02 08:47:42.009431-0500 sockettest[992:1229843] LOG SocketEnginePolling: POSTing
2021-03-02 08:47:42.009690-0500 sockettest[992:1229843] LOG SocketEnginePolling: Doing polling POST http://ip-address:3000/socket.io/?transport=polling&b64=1&sid=S0NLdRPF5uCHUoKaAAAD
2021-03-02 08:47:42.021928-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: websocketUpgrade with data: [["upgrade": "websocket", "sec-websocket-accept": "/i3oWtmlG0z06qeeQyi4FPgnkvI=", "connection": "Upgrade"]]
2021-03-02 08:47:42.022166-0500 sockettest[992:1229850] LOG SocketEngineWebSocket: Sending ws: probe as type: 2
2021-03-02 08:47:42.026699-0500 sockettest[992:1229845] LOG SocketEngine: Got message: 3probe
2021-03-02 08:47:42.026815-0500 sockettest[992:1229845] LOG SocketEngine: Received probe response, should upgrade to WebSockets
2021-03-02 08:47:42.026860-0500 sockettest[992:1229845] LOG SocketEngine: Upgrading transport to WebSockets
2021-03-02 08:47:42.026905-0500 sockettest[992:1229845] LOG SocketEnginePolling: Sending poll:  as type: 6
2021-03-02 08:47:42.026992-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: pong with data: []
2021-03-02 08:47:42.029955-0500 sockettest[992:1229850] LOG SocketEngine: Flushing probe wait
2021-03-02 08:47:42.031221-0500 sockettest[992:1229845] LOG SocketEnginePolling: Got polling response
2021-03-02 08:47:42.031283-0500 sockettest[992:1229845] LOG SocketEngine: Switching to WebSockets
2021-03-02 08:47:42.031324-0500 sockettest[992:1229845] LOG SocketEngineWebSocket: Sending ws:  as type: 5
2021-03-02 08:47:42.031366-0500 sockettest[992:1229845] LOG SocketEngine: Flushing probe wait
2021-03-02 08:48:09.377870-0500 sockettest[992:1229843] LOG SocketEngine: Writing ws:  has data: false
2021-03-02 08:48:09.377870-0500 sockettest[992:1229560] LOG SocketIOClient{/}: Handling event: ping with data: []
2021-03-02 08:48:09.378081-0500 sockettest[992:1229843] LOG SocketEngineWebSocket: Sending ws:  as type: 2
@尼克编码

为什么不尝试从自定义函数而不是init方法调用事件呢。你可以这样做

class PDSocketManager: NSObject {

class var shared: PDSocketManager {
    struct Static{
        static let instance = PDSocketManager()
    }
    return Static.instance
}

var socket: SocketIOClient?
fileprivate var manager: SocketManager?

fileprivate override init(){}

func establishConnection(_ completion: (() -> Void)? = nil) {
    let socketUrlString: String = "\(WebService.SOCKET_URL)"
    self.manager = SocketManager(socketURL: URL(string: socketUrlString)!, config: [.log(true), .reconnects(true), .version(.two), .extraHeaders(["header": "customheader"])])
    self.socket = manager?.defaultSocket
    self.socket?.connect()
    
    self.socket?.once(clientEvent: .connect, callback: { (data, emitter) in
        print("\n\n\n connection done!! \n\n\n")
        if completion != nil{
            completion!()
        }
    })
}

func connect()  {
    socket?.connect()
    print("socket coonect")
}

func disconnect()  {
    socket?.disconnect()
}

func checkSocktConnect() -> Bool {
    if let myManager = self.manager{
        if myManager.status == SocketIOStatus.connected{
          return true
        }else {
            self.socket?.connect()
            return false
        }
    } else{
        return false
    }
} }
连接插座将是一样的

//MARK:- Connect Socket
    PDSocketManager.shared.establishConnection()

问题不在socket.io桌面示例中

如果在节点应用程序的/public/文件夹中放置
socket.html
文件:

<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script>
  const socket = io();
</script>
我跑:

const app = require('express')();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
const port = process.env.PORT || 3000;


function onConnection(socket){
  console.log('a user connected');
  socket.on('disconnect', onDisconnection);
}

function onDisconnection(socket){
  console.log('a user disconnected');
}

io.on('connection', onConnection);
app.use(require('express').static(__dirname + '/public'));

server.listen(port, () => console.log('listening on port ' + port));

嗨,Parth,我想你的方法可以让更多的东西工作,但我仍然无法在模拟服务器端获得连接(也就是说,当我运行node app.js,然后单击按钮时,没有任何东西打印到控制台,这很奇怪…)我将用Xcode打印的日志更新我的代码,非常感谢你——我认为这真的很接近工作状态!旁注:再次查看输出,我意识到connect()函数中的print语句从未被命中,因此这可能是我们遇到的问题…我还必须删除.version(.two)并用我的ip地址替换(WebService.SOCKET_URL):3000字符串URL来编译整个内容——这仍然是正确的,对吗?@nickcoding yes您应该将url替换为您正在使用的url,并且可以删除.version(.two)如果在节点上使用socket.io版本3side@nickcoding你能在这里发布你的日志吗?这样我就可以看一看了。我在编辑的问题中发布了我的日志。我在终端中得到的唯一日志是“监听端口3000”,之后就什么都没有了……看起来客户端和服务器正在连接,客户端注册了它连接,但我的计算机上的模拟服务器没有,因为终端上没有显示“用户已连接”,所以…我以前有app.get(“/”,(req,res)=>{res.send('var socket=io();Hello world');});在我的代码中,当我把本地主机放到浏览器中,并且在终端上得到一个用户连接指示时,我可以得到一个HTML窗口,我只是不明白为什么我在使用swift时没有得到终端打印输出(也就是点击按钮,它应该在终端上打印出已经建立了连接)。另外,我对您对Parth解决方案的评论发表了评论,谢谢!