feat: starting point for live sync
This commit is contained in:
		@ -7,6 +7,7 @@
 | 
				
			|||||||
		"dev": "vite dev",
 | 
							"dev": "vite dev",
 | 
				
			||||||
		"build": "vite build",
 | 
							"build": "vite build",
 | 
				
			||||||
		"preview": "vite preview",
 | 
							"preview": "vite preview",
 | 
				
			||||||
 | 
							"start": "node server.js",
 | 
				
			||||||
		"prepare": "svelte-kit sync || echo ''",
 | 
							"prepare": "svelte-kit sync || echo ''",
 | 
				
			||||||
		"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
 | 
							"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
 | 
				
			||||||
		"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
 | 
							"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
 | 
				
			||||||
@ -38,6 +39,9 @@
 | 
				
			|||||||
	},
 | 
						},
 | 
				
			||||||
	"dependencies": {
 | 
						"dependencies": {
 | 
				
			||||||
		"@sveltejs/adapter-node": "^5.2.12",
 | 
							"@sveltejs/adapter-node": "^5.2.12",
 | 
				
			||||||
		"@sveltejs/adapter-static": "^3.0.8"
 | 
							"@sveltejs/adapter-static": "^3.0.8",
 | 
				
			||||||
 | 
							"express": "^5.1.0",
 | 
				
			||||||
 | 
							"socket.io": "^4.8.1",
 | 
				
			||||||
 | 
							"socket.io-client": "^4.8.1"
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										792
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										792
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										84
									
								
								server.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								server.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,84 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					import express from 'express';
 | 
				
			||||||
 | 
					import http from 'http';
 | 
				
			||||||
 | 
					import { Server } from 'socket.io';
 | 
				
			||||||
 | 
					import { handler } from './build/handler.js';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const app = express();
 | 
				
			||||||
 | 
					const server = http.createServer(app);
 | 
				
			||||||
 | 
					const io = new Server(server);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					io.on('connection', (socket) => {
 | 
				
			||||||
 | 
					  console.log('a user connected');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socket.on('join', (room) => {
 | 
				
			||||||
 | 
					    socket.join(room);
 | 
				
			||||||
 | 
					    console.log(`User joined room: ${room}`);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socket.on('request-state', (data) => {
 | 
				
			||||||
 | 
					    socket.to(data.room).emit('request-state', { from: socket.id });
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socket.on('sync-state', (data) => {
 | 
				
			||||||
 | 
					    socket.to(data.to).emit('sync-state', data);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socket.on('card-move', (data) => {
 | 
				
			||||||
 | 
					    socket.to(data.room).emit('card-move', data);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socket.on('card-click', (data) => {
 | 
				
			||||||
 | 
					    socket.to(data.room).emit('card-click', data);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socket.on('card-drop', (data) => {
 | 
				
			||||||
 | 
					    socket.to(data.room).emit('card-drop', data);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socket.on('sticky-note-add', (data) => {
 | 
				
			||||||
 | 
					    socket.to(data.room).emit('sticky-note-add', data);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socket.on('sticky-note-move', (data) => {
 | 
				
			||||||
 | 
					    socket.to(data.room).emit('sticky-note-move', data);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socket.on('sticky-note-update', (data) => {
 | 
				
			||||||
 | 
					    socket.to(data.room).emit('sticky-note-update', data);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socket.on('sticky-note-delete', (data) => {
 | 
				
			||||||
 | 
					    socket.to(data.room).emit('sticky-note-delete', data);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socket.on('deck-change', (data) => {
 | 
				
			||||||
 | 
					    socket.to(data.room).emit('deck-change', data);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socket.on('shuffle-deck', (data) => {
 | 
				
			||||||
 | 
					    socket.to(data.room).emit('shuffle-deck', data);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socket.on('collect-to-deck', (data) => {
 | 
				
			||||||
 | 
					    socket.to(data.room).emit('collect-to-deck', data);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socket.on('deal-cards', (data) => {
 | 
				
			||||||
 | 
					    socket.to(data.room).emit('deal-cards', data);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socket.on('flip-all-cards', (data) => {
 | 
				
			||||||
 | 
					    socket.to(data.room).emit('flip-all-cards', data);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  socket.on('disconnect', () => {
 | 
				
			||||||
 | 
					    console.log('user disconnected');
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					app.use(handler);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					server.listen(3000, () => {
 | 
				
			||||||
 | 
					  console.log('listening on *:3000');
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
		Reference in New Issue
	
	Block a user