123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import { Observable } from 'rxjs';
- import { createServer } from 'http';
- import { Server, Socket as ServerSocket } from 'socket.io';
- import { io, Socket as ClientSocket } from 'socket.io-client';
- export function startSocketServer(port: number): Observable<ServerSocket> {
- return new Observable((observer) => {
- try {
- let httpServer = createServer();
- let socketServer = new Server(httpServer)
- // something wrong here
- socketServer.on('connection', (socket) => {
- // console.log(`New client connected ${socket.id}`)
- observer.next(socket)
- })
- socketServer.engine.on("connection_error", (err) => {
- console.log(err.req); // the request object
- console.log(err.code); // the error code, for example 1
- console.log(err.message); // the error message, for example "Session ID unknown"
- console.log(err.context); // some additional error context
- });
- // Start the socketServer
- httpServer.listen(port)
- } catch (error) {
- observer.error(error)
- }
- })
- }
- export async function startClientSocketConnection(serverUrl: string): Promise<ClientSocket> {
- return new Promise((resolve, reject) => {
- try {
- let clientSocket = io(serverUrl, {
- reconnection: true, // Enable automatic reconnections
- reconnectionAttempts: 100, // Retry up to 10 times
- reconnectionDelay: 500, // Start with a 500ms delay
- reconnectionDelayMax: 10000, // Delay can grow to a max of 10 seconds
- randomizationFactor: 0.3,
- })
- // Listen for a connection event
- clientSocket.on('connect', () => {
- // console.log('Connected to the server:', clientSocket.id)
- resolve(clientSocket)
- });
- }
- catch (error) {
- reject(error)
- }
- })
- }
|