websocket.ts 786 B

123456789101112131415161718192021222324252627282930
  1. import { Socket, io } from 'socket.io-client';
  2. import { serverEndpoint } from '../constants';
  3. import type { ImmichAsset } from '../models/immich-asset';
  4. import { assets } from './assets';
  5. export const openWebsocketConnection = (accessToken: string) => {
  6. const websocket = io(serverEndpoint, {
  7. transports: ['websocket', 'polling'],
  8. reconnection: true,
  9. forceNew: true,
  10. autoConnect: true,
  11. extraHeaders: {
  12. Authorization: 'Bearer ' + accessToken,
  13. },
  14. });
  15. listenToEvent(websocket);
  16. };
  17. const listenToEvent = (socket: Socket) => {
  18. socket.on('on_upload_success', (data) => {
  19. const newUploadedAsset: ImmichAsset = JSON.parse(data);
  20. assets.update((assets) => [...assets, newUploadedAsset]);
  21. });
  22. socket.on('error', (e) => {
  23. console.log('Websocket Error', e);
  24. });
  25. };