Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add example demonstrating a basic WebSocket protocol with message types #217

Open
kabaluyot opened this issue Mar 26, 2020 · 12 comments
Open
Assignees
Labels
Milestone

Comments

@kabaluyot
Copy link

In HTML5 websockt or socket.io, you can consume messages just with the following lines of code:

var io = require('socket.io-client');
var socket = io('http://localhost:6001');

socket.on('connect', function () {
	console.log('connected');
});

socket.on('StockTicker', function (data) {
	console.log(data);
});

socket.on('StockBidAsk', function (data) {
	console.log(data);
});

socket.on('Stock', function (data) {
	console.log(data);
});

How to achieve the example above in this library?

@nhooyr
Copy link
Owner

nhooyr commented Mar 27, 2020

This library provides no way to route messages, you'd have to do that yourself. You could via a map, a switch statement etc.

See the examples for how to read and write messages.

@nhooyr nhooyr closed this as completed Mar 27, 2020
@kabaluyot
Copy link
Author

kabaluyot commented Mar 27, 2020

the chat example sir? If you may sir, can you provide a basic example for websocket client with "StockTicker" and "Stock" as channels (rooms). The examples are quite confusing esp to beginners and coming from different language like me :)

@nhooyr
Copy link
Owner

nhooyr commented Mar 27, 2020

I understand, let's add a simple example showing how to route different messages.

@nhooyr nhooyr reopened this Mar 27, 2020
@kabaluyot
Copy link
Author

Thank you sir. Maybe you can send just a guide or sample here and I will make a PR

@nhooyr nhooyr added the docs label Mar 29, 2020
@nhooyr nhooyr modified the milestones: v1.8.5, v1.9.0 Apr 13, 2020
@nhooyr nhooyr changed the title Example on how to consume socket connection type messages (like in HTML5 websocket or socket.io) Add example demonstrating a basic WebSocket protocol Apr 14, 2020
@nhooyr nhooyr changed the title Add example demonstrating a basic WebSocket protocol Add example demonstrating a basic WebSocket protocol with different requests Apr 14, 2020
@nhooyr nhooyr changed the title Add example demonstrating a basic WebSocket protocol with different requests Add example demonstrating a basic WebSocket protocol with message types Apr 14, 2020
@pymq
Copy link

pymq commented Apr 14, 2020

Hey @kabaluyot

We had the same problem, so we ended up with writing simple socket.io alternative isp-etp-go on top of nhooyr/websocket, maybe you'd be interested.

@kabaluyot
Copy link
Author

kabaluyot commented Apr 15, 2020

Thank you @pymq, will definitely check it out. For the moment, I was forced to do the client implementation using Typescript :/

@dafinley
Copy link

So I created this fork with the chat example upgraded for specific chat rooms.
In total, it has 4 endpoints

/subscribe - Subscribe to all messages sent to the websocket server
/subscribe/ - Subscribe to all messages from a specific room (i.e. /subscribe/cool)

/publish - Publish to every single listener regardless of whether they are in a room or not
/publish/ - Publish to your room and any global subscribers (i.e publish/cool)

https://github.com/dafinley/websocket/tree/master/examples/chat

@dafinley
Copy link

There's an ios and android app setup to work with it:
https://github.com/dafinley/twilio-video-app-android
https://github.com/dafinley/twilio-video-app-ios

@kabaluyot
Copy link
Author

Well appreciated @dafinley . Thank you

@nhooyr nhooyr modified the milestones: v1.9.0, v1.8.7 May 18, 2020
@nhooyr
Copy link
Owner

nhooyr commented May 19, 2020

With inspiration from @dafinley I think the best move here is to extend the chat example to add structure like timestamps to each message and add two more message types to indicate when a client connects/leaves.

@nhooyr nhooyr self-assigned this May 19, 2020
@dafinley
Copy link

@nhooyr smooth websocket lib man. This was my intro into go. If anybody lands here I did a walkthru video on using this chat example https://www.youtube.com/watch?v=Jhnv5tA6Waw

@nhooyr
Copy link
Owner

nhooyr commented Aug 6, 2021

See #309 and #301 for more problems the new example should fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants