tubesock icon indicating copy to clipboard operation
tubesock copied to clipboard

Use tubesock for several clients

Open emmanuelmillionaer opened this issue 11 years ago • 4 comments

First of all i want to say thanks for this awesome gem! Im not sure if i missunderstood something but i thought that with websockets i can communicate with several clients. I tried some demo code on heroku that is provided by @guilleiguaran : https://github.com/guilleiguaran/rails4-ws-test http://rails4-ws-test.herokuapp.com/ 5 And noticed that i only chat with myself and cannot communicate with other clients. Now my question is if its possible to open channels for groups of clients ? Thanks and have a nice day!

emmanuelmillionaer avatar Feb 15 '14 19:02 emmanuelmillionaer

Did you follow his "Running on Heroku" steps?

Are there errors in the JS console?

ngauthier avatar Feb 15 '14 19:02 ngauthier

@ngauthier @emmanuelmillionaer I've seen that some people is having problem with websockets beta feature under Heroku (it's disable automatically and needs to be re-enabled manually), I'll check if that is the case and I'll re-enable it.

guilleiguaran avatar Feb 15 '14 19:02 guilleiguaran

The issue doesn't seem to be the websocket connection, but the lack of way to have multiple clients (browsers) communicate between them. That would require a way to broadcast messages to all connected clients instead of only passing messages between one client and the server like in the chat example.

Or said differently: have one server running, open two different browsers on that chat and have the messages typed on one browser appear in the other.

And going further than that it would be nice to be able to send the messages from other processes than the server, for example in your background worker to signal updated content.

I have a app currently using websocket-rails ( https://github.com/depili/isk ) but since websocket-rails is currently unmaintained and has several bad bugs in it I have been looking into alternatives, for me tubesock would fit perfectly if it had some way to broadcast messages from different clients and processes.

depili avatar May 22 '15 10:05 depili

@guilleiguaran @emmanuelmillionaer yes, please check the chrome dev console to see if there is an error with the socket connecting.

Also, I wrote this example a long time ago, not sure if it still works: https://github.com/ngauthier/sock-chat

@depili that is a separate issue, and it's not an issue with tubesock. Tubesock does not prescribe mechanisms for using websockets to communicate between clients, only between a client and the server. Tubesock aims to be the minimal base for using websockets via rack hijack and rails 4+. If you wanted to make a multi-client communication library, you have to pick a mechanism for communicating the messages from one client's request to another. In my sock-chat example I picked redis for this. You can also use postgresql's pub/sub. Or you could use global variables in a single-process app, or a myriad of other services and databases. This is why I didn't want to pick one for tubesock. The idea is that it is up to you as a developer to create that mechanism. And if you generalize it, share it! :)

Nick

ngauthier avatar May 22 '15 12:05 ngauthier