Skip to content

Commit efafaa9

Browse files
authored
Merge pull request #632 from allgood/websocket-auth
2 parents 27738c8 + e09caa4 commit efafaa9

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

backend/src/libs/socket.ts

+15
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { Server as SocketIO } from "socket.io";
22
import { Server } from "http";
3+
import { verify } from "jsonwebtoken";
34
import AppError from "../errors/AppError";
45
import { logger } from "../utils/logger";
6+
import authConfig from "../config/auth";
57

68
let io: SocketIO;
79

@@ -13,6 +15,17 @@ export const initIO = (httpServer: Server): SocketIO => {
1315
});
1416

1517
io.on("connection", socket => {
18+
const { token } = socket.handshake.query;
19+
let tokenData = null;
20+
try {
21+
tokenData = verify(token, authConfig.secret);
22+
logger.debug(JSON.stringify(tokenData), "io-onConnection: tokenData");
23+
} catch (error) {
24+
logger.error(JSON.stringify(error), "Error decoding token");
25+
socket.disconnect();
26+
return io;
27+
}
28+
1629
logger.info("Client Connected");
1730
socket.on("joinChatBox", (ticketId: string) => {
1831
logger.info("A client joined a ticket channel");
@@ -32,6 +45,8 @@ export const initIO = (httpServer: Server): SocketIO => {
3245
socket.on("disconnect", () => {
3346
logger.info("Client disconnected");
3447
});
48+
49+
return socket;
3550
});
3651
return io;
3752
};

frontend/src/services/socket-io.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,13 @@ import openSocket from "socket.io-client";
22
import { getBackendUrl } from "../config";
33

44
function connectToSocket() {
5-
return openSocket(getBackendUrl());
5+
const token = localStorage.getItem("token");
6+
return openSocket(getBackendUrl(), {
7+
transports: ["websocket", "polling", "flashsocket"],
8+
query: {
9+
token: JSON.parse(token),
10+
},
11+
});
612
}
713

814
export default connectToSocket;

0 commit comments

Comments
 (0)