socketio-zustand/server/index.js

50 lines
1.2 KiB
JavaScript
Raw Normal View History

2023-07-14 15:38:27 +08:00
import express from "express";
import http from "http";
const app = express();
const server = http.createServer(app);
import { Server } from "socket.io";
const io = new Server(server, {
cors: {
origin: "*",
},
});
const userSockets = new Map();
io.on("connection", (socket) => {
console.log(socket.id);
2023-07-17 03:37:40 +08:00
socket.on("join", (userId) => {
userSockets.set(userId, socket.id);
console.log(userSockets);
});
2023-07-14 15:38:27 +08:00
socket.on("message", (message, callback) => {
console.log("PRODUCTION SERVER: ", message);
2023-07-17 03:37:40 +08:00
const { from: sourceSocketId, to: targetSocketId } = message;
io.to(targetSocketId).emit("message", message);
io.to(sourceSocketId).emit("message", message);
if (callback) {
callback({
ok: true,
});
}
2023-07-14 15:38:27 +08:00
});
socket.on("disconnect", () => {
// Remove the user ID mapping when the socket disconnects
userSockets.forEach((socketId, userId) => {
if (socketId === socket.id) {
userSockets.delete(userId);
}
});
});
socket.on("clear", () => io.emit("clear"));
});
server.listen(3001, () => {
console.log("Server listening on port 3001");
});