Quellcode durchsuchen

send connectionAccepted/Rejected events on connect

let the client know whether it has successfully authenticated
Brian Gough vor 10 Jahren
Ursprung
Commit
2e0f5b74db
1 geänderte Dateien mit 12 neuen und 1 gelöschten Zeilen
  1. 12 1
      services/real-time/app/coffee/Router.coffee

+ 12 - 1
services/real-time/app/coffee/Router.coffee

@@ -39,11 +39,22 @@ module.exports = Router =
 		app.post "/drain", httpAuth, HttpApiController.startDrain
 		app.post "/drain", httpAuth, HttpApiController.startDrain
 
 
 		session.on 'connection', (error, client, session) ->
 		session.on 'connection', (error, client, session) ->
+			if client? and error?.message?.match(/could not look up session by key/)
+				logger.err err: error, client: client?, session: session?, "invalid session"
+				# tell the client to reauthenticate if it has an invalid session key
+				client.emit("connectionRejected", {message: "invalid session"})
+				client.disconnect()
+				return
+
 			if error?
 			if error?
-				logger.err err: error, "error when client connected"
+				logger.err err: error, client: client?, session: session?, "error when client connected"
+				client?.emit("connectionRejected", {message: "error"})
 				client?.disconnect()
 				client?.disconnect()
 				return
 				return
 
 
+			# send positive confirmation that the client has a valid connection
+			client.emit("connectionAccepted")
+
 			metrics.inc('socket-io.connection')
 			metrics.inc('socket-io.connection')
 
 
 			logger.log session: session, client_id: client.id, "client connected"
 			logger.log session: session, client_id: client.id, "client connected"