OverviewFilesCommitsIssuesDocsReleasesPeers

wirecore commits / 546469f

Add real-time updates for followed feeds via WebSocket
Previously, WebSocket only broadcast your own posts and new follows. Now it also broadcasts when people you follow post new messages. Changes: - Added feed.on('append') listener in loadFollows() for existing follows - Added feed.on('append') listener in followUser() for new follows - Broadcasts { type: 'new_post', feed: 'followed', publicKey, name } - Client automatically reloads timeline on receiving new_post messages This enables true real-time timeline updates without manual refresh. Released: version 4096 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
546469fbdcef9fba00d207583ac5cbe91b68a3c2
by plankatron <fleeky@gmail.com> · 2026-01-21T18:06:03.000Z

Changed files (1) +19 -5

pear-app/index.js +19 -5
……@@ -182,6 +182,11 @@ async function loadFollows() {
182182 await swarm.flush()
183183 }
184184
185 // Listen for new posts from this followed feed
186 feed.on('append', () => {
187 broadcast({ type: 'new_post', feed: 'followed', publicKey, name })
188 })
189
185190 follows.set(b4a.toString(feedKey, 'hex'), {
186191 feed,
187192 publicKey,
……@@ -918,17 +923,21 @@ async function startWebServer(port = 3003) {
918923 // Create WebSocket server
919924 wss = new WebSocketServer({ server })
920925
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) => {
922931 wsClients.add(ws)
923 console.log('🔌 Browser connected, total:', wsClients.size)
932 console.log('🔌 Browser connected from:', req.headers.host, 'total:', wsClients.size)
924933
925 ws.on('close', () => {
934 ws.on('close', (code, reason) => {
926935 wsClients.delete(ws)
927 console.log('👋 Browser disconnected, total:', wsClients.size)
936 console.log('👋 Browser disconnected, code:', code, 'reason:', reason || '<none>', 'total:', wsClients.size)
928937 })
929938
930939 ws.on('error', (err) => {
931 console.error('WebSocket error:', err.message)
940 console.error('❌ WebSocket connection error:', err.message, err.code || '')
932941 wsClients.delete(ws)
933942 })
934943 })
……@@ -1369,6 +1378,11 @@ async function followUser(publicKeyInput, name) {
13691378 const feed = store.get(pubKeyBuf)
13701379 await feed.ready()
13711380
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
13721386 follows.set(discoveryKeyHex, {
13731387 feed,
13741388 publicKey: publicKeyHex,