Skip to content

Commit 1d881f8

Browse files
committed
make it nicer to websockets
1 parent c1427cd commit 1d881f8

File tree

3 files changed

+26
-4
lines changed

3 files changed

+26
-4
lines changed

src/Gateway.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import Net from "net";
44
// @ts-ignore
55
import b4a from "b4a";
66
import UDPNet from "./UDPNet.js";
7+
import TCPNet from "./TCPNet.js";
78
import { RoutingEntry, RoutingTable } from "./Router.js";
89
import { Socket as NetSocket } from "net";
910
import Utils from "./Utils.js";
@@ -288,7 +289,7 @@ export default class Gateway extends Peer {
288289
gatePort: gatePort,
289290
}),
290291
);
291-
const timeout = setTimeout(() => rej("timeout"), 5000); // timeout open request
292+
const timeout = setTimeout(() => rej("route timeout"), 5000); // timeout open request
292293
this.addMessageHandler((peer, msg) => {
293294
if (msg.actionId == MessageActions.open && msg.channelPort == channelPort) {
294295
if (msg.error) {
@@ -368,7 +369,7 @@ export default class Gateway extends Peer {
368369
refreshId: this.refreshId,
369370
channels: [],
370371
};
371-
const conn = (protocol == "udp" ? UDPNet : Net).createServer((socket) => {
372+
const conn = (protocol == "udp" ? UDPNet : TCPNet).createServer((socket) => {
372373
onConnection(gate, socket);
373374
});
374375

src/ServiceProvider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import Peer from "./Peer.js";
22
import Message, { MessageContent } from "./Message.js";
3-
import Net from "net";
43
import UDPNet from "./UDPNet.js";
54
import { MessageActions } from "./Message.js";
65
import { AuthorizedPeer } from "./Peer.js";
76
import { RoutingTable, Service } from "./Router.js";
87
import Utils from "./Utils.js";
8+
import TCPNet from "./TCPNet.js";
99

1010
export default class ServiceProvider extends Peer {
1111
private services: Array<Service> = [];
@@ -125,7 +125,7 @@ export default class ServiceProvider extends Peer {
125125
// connect to service
126126
console.log("Connect to", service.serviceHost, service.servicePort, isUDP ? "UDP" : "TCP", "on channel", msg.channelPort);
127127

128-
const serviceConn = (isUDP ? UDPNet : Net).connect({
128+
const serviceConn = (isUDP ? UDPNet : TCPNet).connect({
129129
host: service.serviceHost,
130130
port: service.servicePort,
131131
allowHalfOpen: true,

src/TCPNet.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import Net from 'net';
2+
3+
const timeout = 60 * 60 * 1000;
4+
5+
export default class TCPNet {
6+
public static connect(options: Net.NetConnectOpts, connectionListener?: () => void): Net.Socket{
7+
options.timeout = options.timeout ?? timeout;
8+
const socket:Net.Socket = Net.connect(options, connectionListener);
9+
socket.setKeepAlive(true);
10+
return socket;
11+
}
12+
13+
public static createServer(connectionListener?: (socket: Net.Socket) => void): Net.Server{
14+
const server:Net.Server = Net.createServer(connectionListener);
15+
server.on('connection', (socket) => {
16+
socket.setKeepAlive(true);
17+
socket.setTimeout(timeout);
18+
});
19+
return server;
20+
}
21+
}

0 commit comments

Comments
 (0)