Add user activity

This commit is contained in:
jeffvli
2022-11-15 13:35:26 -08:00
parent e76267be06
commit f9c5e6f9fb
6 changed files with 514 additions and 13 deletions
+1 -1
View File
@@ -53,6 +53,6 @@ const io = new socketio.Server(server, {
});
app.set('socketio', io);
io.on('connection', (socket) => sockets(socket));
io.on('connection', (socket) => sockets(socket, io));
server.listen(9321, () => console.log(`Listening on port ${PORT}`));
+45 -9
View File
@@ -1,15 +1,51 @@
import { Socket } from 'socket.io';
import { Socket, Server } from 'socket.io';
export const sockets = (socket: Socket) => {
socket.broadcast.emit('user:connected', {
userID: socket.id,
username: socket.handshake.query.username,
export const sockets = (socket: Socket, io: Server) => {
socket.on('join', function (data) {
socket.join(data.id); // We are using room of socket io
});
socket.on('disconnect', () => {
socket.broadcast.emit('user:disconnected', {
userID: socket.id,
username: socket.handshake.query.username,
socket.broadcast.emit('user:receive:connect', {
socketId: socket.id,
userId: socket.handshake.query.id,
userName: socket.handshake.query.username,
});
socket.on('disconnect', async () => {
socket.broadcast.emit('user:receive:disconnect', {
socketId: socket.id,
userId: socket.handshake.query.id,
userName: socket.handshake.query.username,
});
});
socket.on('user:send:get_online', async (data) => {
const sockets = await io.fetchSockets();
const onlineSockets = sockets?.map((s) => s.handshake.query.id) || [];
io.sockets
.in(data?.userId)
.emit('user:receive:get_online', { online: onlineSockets });
});
socket.on('user:send:change_song', async (data) => {
socket.broadcast.emit('user:receive:change_song', {
...data,
user: { ...data.user, socketId: socket.id },
});
});
socket.on('user:send:status_idle', async (data) => {
socket.broadcast.emit('user:receive:status_idle', {
status: 'idle',
user: { ...data.user, socketId: socket.id },
});
});
socket.on('user:send:status_playing', async (data) => {
socket.broadcast.emit('user:receive:status_playing', {
status: 'playing',
user: { ...data.user, socketId: socket.id },
});
});
};