X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Fpeertube-socket.ts;h=0398ca61dbf8f71e68c52be44cbed4fe2023dd7b;hb=597f771f3f2bfe4b1e7234a5760e23f0283e2b29;hp=c91407a5938cc091b428ce0b888c8fc9ae76221e;hpb=fbd51e69f2bb801d1b78e79d17bbf18089144358;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/peertube-socket.ts b/server/lib/peertube-socket.ts index c91407a59..0398ca61d 100644 --- a/server/lib/peertube-socket.ts +++ b/server/lib/peertube-socket.ts @@ -1,23 +1,23 @@ -import { Server } from 'http' -import * as SocketIO from 'socket.io' -import { MVideo } from '@server/types/models' +import { Server as HTTPServer } from 'http' +import { Namespace, Server as SocketServer, Socket } from 'socket.io' +import { isIdValid } from '@server/helpers/custom-validators/misc' +import { MVideo, MVideoImmutable } from '@server/types/models' import { UserNotificationModelForApi } from '@server/types/models/user' import { LiveVideoEventPayload, LiveVideoEventType } from '@shared/models' import { logger } from '../helpers/logger' import { authenticateSocket } from '../middlewares' -import { isIdValid } from '@server/helpers/custom-validators/misc' class PeerTubeSocket { private static instance: PeerTubeSocket - private userNotificationSockets: { [ userId: number ]: SocketIO.Socket[] } = {} - private liveVideosNamespace: SocketIO.Namespace + private userNotificationSockets: { [ userId: number ]: Socket[] } = {} + private liveVideosNamespace: Namespace private constructor () {} - init (server: Server) { - const io = new SocketIO.Server(server) + init (server: HTTPServer) { + const io = new SocketServer(server) io.of('/user-notifications') .use(authenticateSocket) @@ -42,12 +42,14 @@ class PeerTubeSocket { socket.on('subscribe', ({ videoId }) => { if (!isIdValid(videoId)) return + /* eslint-disable @typescript-eslint/no-floating-promises */ socket.join(videoId) }) socket.on('unsubscribe', ({ videoId }) => { if (!isIdValid(videoId)) return + /* eslint-disable @typescript-eslint/no-floating-promises */ socket.leave(videoId) }) }) @@ -76,11 +78,11 @@ class PeerTubeSocket { .emit(type, data) } - sendVideoViewsUpdate (video: MVideo) { - const data: LiveVideoEventPayload = { views: video.views } + sendVideoViewsUpdate (video: MVideoImmutable, numViewers: number) { + const data: LiveVideoEventPayload = { viewers: numViewers, views: numViewers } const type: LiveVideoEventType = 'views-change' - logger.debug('Sending video live views update notification of %s.', video.url, { views: video.views }) + logger.debug('Sending video live views update notification of %s.', video.url, { viewers: numViewers }) this.liveVideosNamespace .in(video.id)