-
Notifications
You must be signed in to change notification settings - Fork 839
Contributors wanted! #192
Comments
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 |
@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. |
Any plans on supporting |
@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 |
@odiferousmint Hi. This issue showed all interest to go-socket.io implementation by nodejs socket.io community |
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, Did someone already start working on that on their fork? |
@adrianmxb Hey. I started work on my fork. |
Hello All maintainers of this project, please need some answers ? 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 #192 (comment), I feel sorry that I removed @adrianmxb. Thank you for your contribution. |
Do you still need contributors for this project? I can help solve some issues。 |
@dayueba Yes, of course |
I really wanna contribute to open-source. So, |
Is there some sort of roadmap to make this library compatible with socket.io version 2, 3 or 4? |
Given the experiences I had with open-source recently (with auto-GPT where others would take my code and submit their own PR request, and this other would be one of the main maintainers), plus the state of open-source currently, I would not join as maintainer on this project. However, as I see the license, kindly let know if there are any restrictions to use portions of the code in a new project. I want to have a fresh start with upcoming version 5 in mind, and also utilizing wherever I can Golang 1.21, and new features like generics, etc |
@sagarishere you can find the license here: https://github.com/googollee/go-socket.io/blob/master/LICENSE |
Nope. Because no one contribute into this project. I haven't free time to this project. If you would like to help, you are welcome |
I want to do the functionality to support 2, 3, and 4, but how can I help us? |
@alanarturohernandez awesome!!! make small, targeted and clear pull requests that do this and we'll review them. We don't want to break backwards compatibility if not strictly necessary, so just keep that in mind. |
happy new year guys |
Hello here @googollee , I'd also love to be added as a contributor to this project |
Hey, @Othie12 You could bring new update and can merge updates as can faster as possible |
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.
The text was updated successfully, but these errors were encountered: