diff --git a/backend/src/server.ts b/backend/src/server.ts index 0522f5fc8..9ce1aed39 100644 --- a/backend/src/server.ts +++ b/backend/src/server.ts @@ -12,6 +12,7 @@ import { PubSub } from 'graphql-subscriptions' import Redis from 'ioredis' import bodyParser from 'body-parser' import { graphqlUploadExpress } from 'graphql-upload' +import { randomInt } from 'crypto' export const NOTIFICATION_ADDED = 'NOTIFICATION_ADDED' export const CHAT_MESSAGE_ADDED = 'CHAT_MESSAGE_ADDED' @@ -59,14 +60,27 @@ export const context = async (options) => { } } +const webSocketList: Record = {} + const createServer = (options?) => { const defaults = { context, schema: middleware(schema), subscriptions: { onConnect: (connectionParams, webSocket) => { + const random = randomInt(9999) + webSocket.identifier = `${connectionParams.authorization} ${random}` + console.log('onConnect', webSocket.identifier) + webSocketList[webSocket.identifier] = webSocket + console.log('connected sockets: ', Object.keys(webSocketList).length) return getContext(connectionParams) }, + onDisconnect: (webSocket) => { + console.log( 'onDisconnect', webSocket.identifier) + delete webSocketList[webSocket.identifier] + console.log('connected sockets: ', Object.keys(webSocketList).length) + // console.log('onDisconnect', webSocket, webSocket.rawHeaders) + }, }, debug: !!CONFIG.DEBUG, uploads: false,