3

When I try running SocketTutorialManager.init() when a button is pressed, the different functions in the initializers should run, but they don't and I instead get the following printed to the Xcode console:

'sockettest[70290:1461156] [] nw_protocol_get_quic_image_block_invoke dlopen libquic failed'

I have an app.js file on my desktop that looks like:

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));

I also ran an npm init on the desktop with a bunch of default settings and then import node dependencies express * and socket.io * via my package.json file.

My Swift looks like:

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
}
} }

UPDATE:

This is the Xcode output when logging the socket with Parth's solution:

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
nickcoding
  • 305
  • 8
  • 35

2 Answers2

2

The problem is not in your socket.io desktop example.

If you place in the node app's /public/ folder a socket.html file:

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

And then open: http://localhost:3000/socket.html

You'll see the socket.io server return log:

listening on port 3001
a user connected

I ran:

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));
adamrights
  • 1,701
  • 1
  • 11
  • 27
  • So....I used to have app.get('/', (req, res) => { res.send('

    Hello world

    '); }); in my code and it made it so that I could get an HTML window up when I put local host into my browser and I WAS getting a user connected indication on terminal then, I just don't understand why I don't get a terminal printout when I use the way I did in swift (AKA on button click, it should print out in terminal that a connection has been established). Also, I commented on your comment on Parth's solution, thank you!
    – nickcoding Mar 06 '21 at 13:58
1

@Nickcoding

Why don't you try to call the event from the custom functions instead of init method. You can do as follows.

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
    }
} }

Connect Socket will be like

//MARK:- Connect Socket
    PDSocketManager.shared.establishConnection()
Parth Dhorda
  • 712
  • 1
  • 8
  • 32
  • Hi Parth, I think your method makes more things work, but I'm still not getting connection on the simulated server side (AKA when I run node app.js, and then click the button, nothing prints to the console, which is odd...) I'll update my code with the logs printed in Xcode, and thank you so much--I think this is really close to working! – nickcoding Mar 01 '21 at 13:28
  • Side Note: Looking through the output again, I realized that the print statement in the connect() function is never hit, so that might be the issue we're having...and I also had to remove .version(.two) and replaced (WebService.SOCKET_URL) with my ip-address:3000 string URL to get this whole thing to compile--that's still correct, right? – nickcoding Mar 01 '21 at 17:34
  • @nickcoding yes you should replace the url to the one you are using and you can remove the .version(.two) if you are using the socket.io version 3 on the node side – Parth Dhorda Mar 02 '21 at 09:36
  • @nickcoding can you post your logs here so I can take a look – Parth Dhorda Mar 02 '21 at 10:50
  • I did post my logs in the edited question--the only logging I get in terminal is the 'listening on port 3000' and then nothing after that...it seems like the client and server are connecting and the client registers that connection but the simulated server on my computer doesn't because there's nothing printed to the terminal that says 'user connected' – nickcoding Mar 02 '21 at 12:00
  • What do you think? – nickcoding Mar 03 '21 at 12:24
  • "http://localhost:3000/" <== This isn't working as SOCKET_URL? You could try: `http://localhost:3001/socket.io` – adamrights Mar 06 '21 at 09:30
  • Did you try using the socket.io.js the node app serves and doing the simplest of connections I posted below? – adamrights Mar 06 '21 at 09:31
  • @adamrights I tried that, I also updated my code in the original question to reflect the most updated version (using Parth's solution for the swift file). Thank you for any feedback/advice you can give--I also commented on your other post but we can probably start a conversation chain on that one instead of this one :) – nickcoding Mar 06 '21 at 13:53