Skip to content

Commit

Permalink
More logging and improvements to connections
Browse files Browse the repository at this point in the history
  • Loading branch information
ikoenigsknecht committed May 17, 2024
1 parent c726a9c commit 7f1bce6
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 7 deletions.
5 changes: 3 additions & 2 deletions packages/backend/src/nest/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,9 @@ export class AppModule {
allowedHeaders: ['authorization'],
credentials: true,
},
pingInterval: 1000_000,
pingTimeout: 1000_000,
pingInterval: 10_000,
pingTimeout: 2_000,
connectTimeout: 60_000,
})
io.engine.use((req, res, next) => {
const authHeader = req.headers['authorization']
Expand Down
5 changes: 4 additions & 1 deletion packages/backend/src/nest/libp2p/libp2p.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,10 @@ export class Libp2pService extends EventEmitter {
}),
],
dht: kadDHT(),
pubsub: gossipsub({ allowPublishToZeroPeers: true }),
pubsub: gossipsub({
allowPublishToZeroPeers: true,
doPX: true,
}),
})
} catch (err) {
this.logger.error('Create libp2p:', err)
Expand Down
14 changes: 12 additions & 2 deletions packages/backend/src/nest/websocketOverTor/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import { type ServerOptions, type WebSocketServer as ItWsWebsocketServer } from
import { multiaddr } from '@multiformats/multiaddr'
import { type MultiaddrConnection, type Connection } from '@libp2p/interface-connection'
import logger from '../common/logger'
import { DuplexWebSocket } from 'it-ws/dist/src/duplex'

const log = logger('libp2p:websockets')

Expand Down Expand Up @@ -73,10 +74,11 @@ export class WebSockets extends EventEmitter {

async dial(ma: Multiaddr, options: DialOptions) {
let conn: Connection
let socket
let socket: DuplexWebSocket
let maConn: MultiaddrConnection

try {
log(`Connecting socket with ${ma.toString()}`)
socket = await this._connect(ma, {
websocket: {
...this._websocketOpts,
Expand All @@ -88,6 +90,7 @@ export class WebSockets extends EventEmitter {
throw e
}
try {
log(`Creating multiaddr connection from socket with ${ma.toString()}`)
maConn = socketToMaConn(socket, ma, { signal: options.signal })
log('new outbound connection %s', maConn.remoteAddr)
} catch (e) {
Expand All @@ -96,6 +99,7 @@ export class WebSockets extends EventEmitter {
}

try {
log(`Upgrading outbound connection with ${maConn.remoteAddr.toString()}`)
conn = await options.upgrader.upgradeOutbound(maConn)
log('outbound connection %s upgraded', maConn.remoteAddr)
return conn
Expand All @@ -120,6 +124,7 @@ export class WebSockets extends EventEmitter {

const myUri = `${toUri(ma)}/?remoteAddress=${encodeURIComponent(this.localAddress)}`

log(`Creating raw socket connection to ${ma.toString()}`)
const rawSocket = connect(myUri, Object.assign({ binary: true }, options))

if (rawSocket.socket.on) {
Expand All @@ -129,6 +134,7 @@ export class WebSockets extends EventEmitter {
}

if (!options.signal) {
log(`Waiting for socket connection to ${ma.toString()} with no abort signal`)
await Promise.race([rawSocket.connected(), errorPromise.promise])

log(`${this.localAddress} connected %s`, ma)
Expand All @@ -155,6 +161,7 @@ export class WebSockets extends EventEmitter {
})

try {
log(`Waiting for socket connection to ${ma.toString()}`)
await Promise.race([abort, errorPromise.promise, rawSocket.connected()])
} finally {
options.signal.removeEventListener('abort', onAbort)
Expand Down Expand Up @@ -200,8 +207,10 @@ export class WebSockets extends EventEmitter {
if (!query.remoteAddress) return

const remoteAddress = query.remoteAddress.toString()
const ma = multiaddr(remoteAddress)
try {
maConn = socketToMaConn(stream, multiaddr(remoteAddress))
log(`Creating multiaddr connection for inbound peer ${ma.toString()}`)
maConn = socketToMaConn(stream, ma)
const peer = {
id: PeerId.createFromB58String(remoteAddress.split('/p2p/')[1]),
multiaddrs: [maConn.remoteAddr],
Expand All @@ -214,6 +223,7 @@ export class WebSockets extends EventEmitter {
}

try {
log(`Upgrading inbound connection with ${maConn.remoteAddr.toString()}`)
conn = await upgrader.upgradeInbound(maConn)
} catch (err) {
log.error('inbound connection failed to upgrade', err)
Expand Down
2 changes: 1 addition & 1 deletion packages/desktop/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@
"build:renderer:prod": "webpack --config webpack/webpack.config.renderer.prod.js",
"postBuild": "node scripts/postBuild.js",
"prestart": "npm run build:main",
"start": "cross-env DEBUG='backend*,quiet*,state-manager*,desktop*,utils*,libp2p:websockets:listener:backend,libp2p:connection-manager:auto-dialler,libp2p:pnet' npm run start:renderer",
"start": "cross-env DEBUG='backend*,quiet*,state-manager*,desktop*,utils*,libp2p:websockets:listener:backend,libp2p:connection-manager:auto-dialler,libp2p:pnet,libp2p:upgrader' npm run start:renderer",
"start:main": "cross-env NODE_ENV=development electron .",
"start:renderer": "cross-env NODE_ENV=development webpack-dev-server --config webpack/webpack.config.renderer.dev.js",
"storybook": "export NODE_OPTIONS=--openssl-legacy-provider && start-storybook -p 6006",
Expand Down
2 changes: 1 addition & 1 deletion packages/mobile/ios/NodeJsMobile/NodeRunner.mm
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ - (void) startEngineWithArguments:(NSArray*)arguments:(NSString*)builtinModulesP
nodePath = [nodePath stringByAppendingString:builtinModulesPath];
}
setenv([@"NODE_PATH" UTF8String], (const char*)[nodePath UTF8String], 1);
setenv([@"DEBUG" UTF8String], "backend:*,state-manager:*,libp2p:pnet", 1);
setenv([@"DEBUG" UTF8String], "backend:*,state-manager:*,libp2p:websockets:listener:backend,libp2p:connection-manager:auto-dialler,libp2p:pnet,libp2p:upgrader", 1);

int c_arguments_size=0;

Expand Down

0 comments on commit 7f1bce6

Please sign in to comment.