mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-16 01:21:20 -04:00
34 lines
1.2 KiB
JavaScript
34 lines
1.2 KiB
JavaScript
import { io } from 'socket.io-client';
|
|
import { loadSettings } from '../settings/persistence.js';
|
|
|
|
const configured = import.meta.env.VITE_ROVERD_URL?.trim();
|
|
const resolvedUrl = configured && configured.length > 0 ? configured : window.location.origin;
|
|
console.info('[socket] connecting to', resolvedUrl);
|
|
const settings = loadSettings();
|
|
const transportPref = settings?.page?.connectionTransport || 'websocket';
|
|
const transports = transportPref === 'polling' ? ['polling'] : ['websocket', 'polling'];
|
|
const CLIENT_ID_KEY = 'roverd_client_id';
|
|
|
|
function getClientId() {
|
|
if (typeof window === 'undefined') return null;
|
|
try {
|
|
const existing = window.localStorage.getItem(CLIENT_ID_KEY);
|
|
if (existing) return existing;
|
|
const created = (crypto?.randomUUID && crypto.randomUUID()) || `${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
window.localStorage.setItem(CLIENT_ID_KEY, created);
|
|
return created;
|
|
} catch (err) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
const clientId = getClientId();
|
|
export const socket = io(resolvedUrl, {
|
|
transports,
|
|
timeout: 15000,
|
|
auth: {
|
|
clientId,
|
|
},
|
|
});
|
|
socket.on('connect_error', (err) => console.error('connect_error', err.code, err.message, err.data));
|