Closed googollee closed 1 month ago
Hi, I want to help if you agree, I always loved socket.io and I want to have it on Go.
UPDATE: after having a look around, I think it could be better to start from scrach as this project is outdated and also is the engine.io
I didn't check the difference between 1.4 and 2.0. If you say socket.io 2.0, I think starting from scratch maybe a good idea.
To not have all the work you did @googollee on 1.4 completely out the window, would you mind just describing the performance enhancements you mentioned for the 1.4 branch, compared to the current master version? I'd love to help out here, but I would like to understand a bit more what's been done, what your architectural ideas were, etc?
The main difference is the 1.4 branch try to avoid too many lockers and separate the transport layer to go-engine.io. The separation makes the implementation of go-socket.io much simpler. The socket created from go-engine.io will call socket.loop() to handle the messages, which is a good start point.
The difference in go-engine.io and old master branch is in http-polling. It will force only one GET or POST at the same time, and the socket above the http-polling will handle Read()/Write() synchronously.
The main part which I didn't finish, is the unit test of some function in go-sockeet.io, and the adapter. The design of the adapter is a interface which can let other sources to put the messages into socket.loop() or somewhere to let the handler receiving them. Then all the redis/broadcast can use a customed adapter to communicate with the socket. And of course, I didn't finish the room/broadcast API in the 1.4 branch, because of the lack of the adapter.
@googollee can you add me as contributor on go-engine and go-socket? I can help by checking and merging pull requests to fix bugs that people find.
@erkie Done. Thank you.
what is the status now? have you done any stress test yet? @googollee
@jjhesk the 1.4 branch has been merged to master, though no major changes have been made for a long time. We'd love if you could write a stress test and help us get good benchmarks for this project.
@googollee @erkie some development and perf concepts you might find it helpful.. #172. I have cross reference works from another repo in iris and also found it there we have enough supports to try solving the problems here.
@erkie we need a testing plan, example and feature plan example.. its alot of work.
Once the coding is fixed done and the next step we will QA it and make sure all the codes are running solid.
The coverage testing setup should be something like this...
rundown test
hi,最近要用socket.io,您的项目有没有一些小的demo之类的,比如在go中怎么去使用,以及golang版本的客户端,这样我可以更好的进行封装压测,谢谢,期待你的回复
@PyreneGitHub please open a separate ticket if you have a question. Thanks!
@googollee @erkie Hi I have free time and I can help support issues in this repository.
@mrfoe7 lovely! I can't add collaborators, @googollee can you fix? More helpers yay! 😃
@mrfoe7 Thanks in advance. I just send out the invitation, please check.
@googollee Thanks for you trust. I will try to do everything possible for project
Any plans on supporting socket.io 2.3.0
, or is there a Go library that does that?
@DisruptiveMind would not count on it at all unless we can find some passionate people to get that project going. :)
Hey all, great to see this is still moving along. I'll contribute where I can but I won't be able to commit much at the moment. Count me in as lowly support :)
@DisruptiveMind nice! :D We need all the help we can get.
What about socket.io
folks? Would they be interested in helping? :D
@odiferousmint Hi. This issue showed all interest to go-socket.io implementation by nodejs socket.io community https://github.com/socketio/socket.io/issues/3242
I wish I could help but I am going to work 12 hours a day really soon so I will not have time for it. :(
@odiferousmint No problem. It is voluntary activity
Hey @googollee / @erkie / @mrfoe7, i am using go-socket.io in our backend application and would love to help maintain/update the project. The next few weeks will be pretty busy for me but after that I might have some time to work on the implementation of v2 (no promises though!).
Did someone already start working on that on their fork? Would be a step in the right direction to create a dev-v2 branch (or something similiar) on which we can merge progress.
@adrianmxb Hey. I started work on my fork. I created dev branch in main repository.
I'd like to volunteer some time too. I'm pretty new to dev so I might need to be pointed to where I can help make progress. So if anyone has the time to "help me help the project", let me know.
@gonzric1 it is good news. If you have new idea or some fix current code, please send new PR
@gonzric1 so cool! You can also join the telegram chat: https://t.me/go_socketio
@googollee may you add @adrianmxb as maintainer roles?
Done.
As there are 3 volunteers now, I will close this issue. We could reopen it later if necessary.
@googollee Thank you
hello,Can i became a Contributor? I realize that the current version is too far away from the official version, and now all have version 2.3 (socket.io-client). Is there any update plan? I want to join because I am going to use it
@popzhangzhi great that you are interested! To start with you could just start making a bunch of pull requests and we'll look at them as fast as we can.
I also want to help
@DesertThief you are welcome. Pick up issues in backlog :)
Are you planning to support socket.io 2.x (and 3.x) in the future? I think I can help.
We'd love to have support for latest socket.io. Please help!!!!!!!
Hello All
maintainers of this project, please need some answers ? Any telegram group or discord ??
Can we use this implementation for a big project ??
I would also like to help you as much as I can
Awesome! Feel free to start helping out with issues, improvements and pull requests. :D
Hi all! I saw that this library is really far behind the official Socket.IO versions, and I'd like to help out as much as I can! Is there any roadmap or anything like that for features that need to be implemented to get the library up to date with the official Socket.IO versions? Thanks :D
Hey @manapoints super cool that you want to help out. So far this project is pretty unorganized. No roadmap, no real central planning or anything. We know we want it to be uptodate, so any PR that looks good and adds great features without breaking backwards compatibility will surely be merged. I've tried to organize the issues and add helpful labels. I think just finding easy bugs to close is a great way to get into the project. If you want to look into supporting later versions of socket.io, that's awesome too! Feel free to ping me in PR's so I see them quickly.
@erkie and @adrianmxb are you maintainer this project?
No, just a collaborater.
@adrianmxb didn't show up recently. I can't reach him with his email. I tend to remove him out of collaborators if he doesn't reply me in 7 days.
😢
😵
As https://github.com/googollee/go-socket.io/issues/192#issuecomment-830839392, I feel sorry that I removed @adrianmxb. Thank you for your contribution.
JOIN OUR TELEGRAM CHAT: https://t.me/go_socketio
TL;DR, Anyone wants to take over this project? I hope someone can help me to maintain it.
I created this project when I needed it during my work. The code was 0.9.x branch which corresponded to socket.io 0.9.x. That branch worked OK, but the code itself was very ugly and low-performance.
So after a while, I started working on the v1.4 branch, when socket.io was 1.4 at that time. But I had changed my work at that time, and the new work didn't require socket.io. I wanted to use unit test to make it right but looked not good.
Currently, I leave master as 0.9.x because I don't want to break anyone's project by the huge change. (Blame package managing of Go.) So even the master branch should be the latest code, it isn't. You can use gopkg.in/googollee/go-socket.io.v1 as importing path if you want to use v1.4. Or you can use dep or any pkg manager you like.
As my work doesn't require socket.io now and I focus on learning English recently, I don't have time to maintain this project. I hope any volunteer can take over it.
This part writes for the potential maintainer. I'd like to give you a brief idea how to dive into the code.
The main differences between 0.9.x and v1.4 are listed below:
go-engine.io handles all kinds of transport, like HTTP polling or WebSocket, and turns them into a socket-like interface. it also handles transport upgrading and maintains the session. If a connection breaks and reconnects in a certain time with the same session id, go-engine.io will treat them as same one and will send all data during the breaking time to the new connection.
A WebSocket connection can map to a socket-like interface easily, but not HTTP polling. For HTTP polling, I try to make all read in one thread(more accurate, in one goroutine) and all write in another. Each thread only handles one HTTP request at a time. I try not to let read and write interrupted each other.
I hope this part is good enough to understand and may help when diving into the code.