HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
bperel
socket-call
TypeScript2025–2025
bperel / socket-call

socket-call

Discover this repository through its Hacker News conversations.

3Distinct people
4Mentions
0Explicit recommenders
39GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A public description has not been verified.

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 12:54:37 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by hour4 dated mentions

Observed mentions: 2025-06-15 13:11:02 UTC to 2025-06-16 17:31:05 UTC.

012025-06-15 13:00:00 UTC to 2025-06-15 14:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJun 15, 13:002025-06-15 14:00:00 UTC to 2025-06-15 15:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-15 15:00:00 UTC to 2025-06-15 16:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-15 16:00:00 UTC to 2025-06-15 17:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-15 17:00:00 UTC to 2025-06-15 18:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-15 18:00:00 UTC to 2025-06-15 19:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-15 19:00:00 UTC to 2025-06-15 20:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-15 20:00:00 UTC to 2025-06-15 21:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-06-15 21:00:00 UTC to 2025-06-15 22:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-15 22:00:00 UTC to 2025-06-15 23:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-15 23:00:00 UTC to 2025-06-16 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-16 00:00:00 UTC to 2025-06-16 01:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-16 01:00:00 UTC to 2025-06-16 02:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-16 02:00:00 UTC to 2025-06-16 03:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-16 03:00:00 UTC to 2025-06-16 04:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsJun 16, 03:002025-06-16 04:00:00 UTC to 2025-06-16 05:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-16 05:00:00 UTC to 2025-06-16 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-16 06:00:00 UTC to 2025-06-16 07:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-16 07:00:00 UTC to 2025-06-16 08:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-16 08:00:00 UTC to 2025-06-16 09:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-16 09:00:00 UTC to 2025-06-16 10:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-16 10:00:00 UTC to 2025-06-16 11:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-16 11:00:00 UTC to 2025-06-16 12:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2025-06-16 12:00:00 UTC to 2025-06-16 13:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-16 13:00:00 UTC to 2025-06-16 14:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-16 14:00:00 UTC to 2025-06-16 15:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-16 15:00:00 UTC to 2025-06-16 16:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-16 16:00:00 UTC to 2025-06-16 17:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-16 17:00:00 UTC to 2025-06-16 18:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJun 16, 17:00

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Jun 15, 13:002025-06-15 13:00:00 UTC2025-06-15 14:00:00 UTC101
Jun 15, 14:002025-06-15 14:00:00 UTC2025-06-15 15:00:00 UTC000
Jun 15, 15:002025-06-15 15:00:00 UTC2025-06-15 16:00:00 UTC000
Jun 15, 16:002025-06-15 16:00:00 UTC2025-06-15 17:00:00 UTC000
Jun 15, 17:002025-06-15 17:00:00 UTC2025-06-15 18:00:00 UTC000
Jun 15, 18:002025-06-15 18:00:00 UTC2025-06-15 19:00:00 UTC000
Jun 15, 19:002025-06-15 19:00:00 UTC2025-06-15 20:00:00 UTC000
Jun 15, 20:002025-06-15 20:00:00 UTC2025-06-15 21:00:00 UTC101
Jun 15, 21:002025-06-15 21:00:00 UTC2025-06-15 22:00:00 UTC000
Jun 15, 22:002025-06-15 22:00:00 UTC2025-06-15 23:00:00 UTC000
Jun 15, 23:002025-06-15 23:00:00 UTC2025-06-16 00:00:00 UTC000
Jun 16, 00:002025-06-16 00:00:00 UTC2025-06-16 01:00:00 UTC000
Jun 16, 01:002025-06-16 01:00:00 UTC2025-06-16 02:00:00 UTC000
Jun 16, 02:002025-06-16 02:00:00 UTC2025-06-16 03:00:00 UTC000
Jun 16, 03:002025-06-16 03:00:00 UTC2025-06-16 04:00:00 UTC000
Jun 16, 04:002025-06-16 04:00:00 UTC2025-06-16 05:00:00 UTC000
Jun 16, 05:002025-06-16 05:00:00 UTC2025-06-16 06:00:00 UTC000
Jun 16, 06:002025-06-16 06:00:00 UTC2025-06-16 07:00:00 UTC000
Jun 16, 07:002025-06-16 07:00:00 UTC2025-06-16 08:00:00 UTC000
Jun 16, 08:002025-06-16 08:00:00 UTC2025-06-16 09:00:00 UTC000
Jun 16, 09:002025-06-16 09:00:00 UTC2025-06-16 10:00:00 UTC000
Jun 16, 10:002025-06-16 10:00:00 UTC2025-06-16 11:00:00 UTC000
Jun 16, 11:002025-06-16 11:00:00 UTC2025-06-16 12:00:00 UTC110
Jun 16, 12:002025-06-16 12:00:00 UTC2025-06-16 13:00:00 UTC000
Jun 16, 13:002025-06-16 13:00:00 UTC2025-06-16 14:00:00 UTC000
Jun 16, 14:002025-06-16 14:00:00 UTC2025-06-16 15:00:00 UTC000
Jun 16, 15:002025-06-16 15:00:00 UTC2025-06-16 16:00:00 UTC000
Jun 16, 16:002025-06-16 16:00:00 UTC2025-06-16 17:00:00 UTC000
Jun 16, 17:002025-06-16 17:00:00 UTC2025-06-16 18:00:00 UTC101

What Hacker News says

4 sources
That is awesome! I see you use Proxy which is a very cool way to achieve this. [0] I saw this approach using Proxy when hacking VSCode's ipc where they use it define services from ipc channels/ [1] I did something similar using VSCode's core ipc / rpc which only requires a transport (protocol) to implement {send, onMessage}. I use it in a Chrome extension so I have to implement my own socket.io and port message passing protocols. Some of the benefits are being able to send a message from MAIN world of an injected content script (if you want to intercept all fetch and XMLHttpRequest requests, for example) through a tunnel in the isolated world content script to the side panel which could theoretically tunnel it to a server over socket.io. If I have a Math service, for example, that only adds two numbers, it can be called from anywhere in t
Read the rest
he system with `await mathService.add(1,1);` with mathServer being dependency injected using constructor(@IMathService private readonly mathService: IMathService). This is how VSCode manages calling code across hundreds of different isolated JavaScript runtime environments. What I did was a bit overkill and likely trpc would have been good enough if I knew about it when I started. [0] https://github.com/bperel/socket-call/blob/e0076d7887397a92a... [1] https://github.com/microsoft/vscode/blob/24c0ff16c250f2b39ee...
In Show HN: Socket-call – Call socket.io events like normal JavaScript functions
bperel·Jun 16, 2025Submission

Show HN: Socket-call – Call socket.io events like normal JavaScript functions

Hello HN, I built a Typescript library (named socket-call, for lack of a more sexy name) whose goal is to be able to call socket.io events as regular functions. So you declare your server-side like so: ... const listenEvents = (services: UserServices) => ({ // Add your events here, the name of the event is the name of the function login: async (username: string) => { services._socket.data.user = { username }; console.log(`User ${username} logged in`); setInterval(() => { // Calling an event that's handled client-side services.showServerMessage(`You're still logged in ${username}!`) }, 1000); return `You are now logged in ${username}!`; }, }); and then on the client side you call them like normal async Javascript functions (and you can also create client-side event handlers):
Read the rest
... const user = socket.addNamespace<UserEmitEvents, UserListenEvents>( '/user' ); // Calling an event that's declared server-side user.login(username.value).then((message) => { console.log('Server acked with', message); }); // Handling an event that is sent by the server user.showServerMessage = (message) => { console.log('Server sent us the message', message); } I use this library for my own projects and would be interested to receive feedback about it :-)
44 points · Open discussion

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.