| … | … | @@ -182,6 +182,11 @@ async function loadFollows() { |
| 182 | 182 | await swarm.flush() |
| 183 | 183 | } |
| 184 | 184 | |
| 185 | // Listen for new posts from this followed feed |
| 186 | feed.on('append', () => { |
| 187 | broadcast({ type: 'new_post', feed: 'followed', publicKey, name }) |
| 188 | }) |
| 189 | |
| 185 | 190 | follows.set(b4a.toString(feedKey, 'hex'), { |
| 186 | 191 | feed, |
| 187 | 192 | publicKey, |
| … | … | @@ -918,17 +923,21 @@ async function startWebServer(port = 3003) { |
| 918 | 923 | // Create WebSocket server |
| 919 | 924 | wss = new WebSocketServer({ server }) |
| 920 | 925 | |
| 921 | | wss.on('connection', (ws) => { |
| 926 | wss.on('error', (err) => { |
| 927 | console.error('❌ WebSocket server error:', err.message, err.stack) |
| 928 | }) |
| 929 | |
| 930 | wss.on('connection', (ws, req) => { |
| 922 | 931 | wsClients.add(ws) |
| 923 | | console.log('🔌 Browser connected, total:', wsClients.size) |
| 932 | console.log('🔌 Browser connected from:', req.headers.host, 'total:', wsClients.size) |
| 924 | 933 | |
| 925 | | ws.on('close', () => { |
| 934 | ws.on('close', (code, reason) => { |
| 926 | 935 | wsClients.delete(ws) |
| 927 | | console.log('👋 Browser disconnected, total:', wsClients.size) |
| 936 | console.log('👋 Browser disconnected, code:', code, 'reason:', reason || '<none>', 'total:', wsClients.size) |
| 928 | 937 | }) |
| 929 | 938 | |
| 930 | 939 | ws.on('error', (err) => { |
| 931 | | console.error('WebSocket error:', err.message) |
| 940 | console.error('❌ WebSocket connection error:', err.message, err.code || '') |
| 932 | 941 | wsClients.delete(ws) |
| 933 | 942 | }) |
| 934 | 943 | }) |
| … | … | @@ -1369,6 +1378,11 @@ async function followUser(publicKeyInput, name) { |
| 1369 | 1378 | const feed = store.get(pubKeyBuf) |
| 1370 | 1379 | await feed.ready() |
| 1371 | 1380 | |
| 1381 | // Listen for new posts from this followed feed |
| 1382 | feed.on('append', () => { |
| 1383 | broadcast({ type: 'new_post', feed: 'followed', publicKey: publicKeyHex, name }) |
| 1384 | }) |
| 1385 | |
| 1372 | 1386 | follows.set(discoveryKeyHex, { |
| 1373 | 1387 | feed, |
| 1374 | 1388 | publicKey: publicKeyHex, |