diff --git a/src/api/stream/othello-game.ts b/src/api/stream/othello-game.ts
index ba0f11252f..1c846f27ae 100644
--- a/src/api/stream/othello-game.ts
+++ b/src/api/stream/othello-game.ts
@@ -6,7 +6,7 @@ import { publishOthelloGameStream } from '../event';
 import Othello from '../../common/othello/core';
 import * as maps from '../../common/othello/maps';
 
-export default function(request: websocket.request, connection: websocket.connection, subscriber: redis.RedisClient, user: any): void {
+export default function(request: websocket.request, connection: websocket.connection, subscriber: redis.RedisClient, user?: any): void {
 	const gameId = request.resourceURL.query.game;
 
 	// Subscribe game stream
diff --git a/src/api/streaming.ts b/src/api/streaming.ts
index 7d67ba9574..f56c08092c 100644
--- a/src/api/streaming.ts
+++ b/src/api/streaming.ts
@@ -53,6 +53,11 @@ module.exports = (server: http.Server) => {
 
 		const user = await authenticate(request.resourceURL.query.i);
 
+		if (request.resourceURL.pathname === '/othello-game') {
+			othelloGameStream(request, connection, subscriber, user);
+			return;
+		}
+
 		if (user == null) {
 			connection.send('authentication-failed');
 			connection.close();
@@ -64,7 +69,6 @@ module.exports = (server: http.Server) => {
 			request.resourceURL.pathname === '/drive' ? driveStream :
 			request.resourceURL.pathname === '/messaging' ? messagingStream :
 			request.resourceURL.pathname === '/messaging-index' ? messagingIndexStream :
-			request.resourceURL.pathname === '/othello-game' ? othelloGameStream :
 			request.resourceURL.pathname === '/othello' ? othelloStream :
 			null;
 
diff --git a/src/web/app/common/scripts/streaming/othello-game.ts b/src/web/app/common/scripts/streaming/othello-game.ts
index 51a435541a..cdf46d5d8d 100644
--- a/src/web/app/common/scripts/streaming/othello-game.ts
+++ b/src/web/app/common/scripts/streaming/othello-game.ts
@@ -3,7 +3,7 @@ import Stream from './stream';
 export class OthelloGameStream extends Stream {
 	constructor(me, game) {
 		super('othello-game', {
-			i: me.token,
+			i: me ? me.token : null,
 			game: game.id
 		});
 	}
diff --git a/src/web/app/common/views/components/othello.game.vue b/src/web/app/common/views/components/othello.game.vue
index 907e317ce9..69b2127760 100644
--- a/src/web/app/common/views/components/othello.game.vue
+++ b/src/web/app/common/views/components/othello.game.vue
@@ -56,6 +56,7 @@ export default Vue.extend({
 
 	computed: {
 		iAmPlayer(): boolean {
+			if (!(this as any).os.isSignedIn) return false;
 			return this.game.user1_id == (this as any).os.i.id || this.game.user2_id == (this as any).os.i.id;
 		},
 		myColor(): Color {