googollee / go-socket.io

socket.io library for golang, a realtime application framework.
Other
5.73k stars 835 forks source link

Contributors wanted! #192

Open googollee opened 6 years ago

googollee commented 6 years ago

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:

  1. v1.4 separates go-engine.io and go-socket.io to handle transport and RPC.
  2. v1.4 tries to reduce the threads.

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.

dayueba commented 1 year ago

Do you still need contributors for this project? I can help solve some issues。

sshaplygin commented 1 year ago

@dayueba Yes, of course

linhbkhn95 commented 1 year ago

I really wanna contribute to open-source. So, I would also like to help you as much as I can

Martin-Karsten commented 1 year ago

Is there some sort of roadmap to make this library compatible with socket.io version 2, 3 or 4?

sagarishere commented 1 year ago

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

erkie commented 1 year ago

@sagarishere you can find the license here: https://github.com/googollee/go-socket.io/blob/master/LICENSE

sshaplygin commented 1 year ago

Is there some sort of roadmap to make this library compatible with socket.io version 2, 3 or 4?

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

alanarturohernandez commented 1 year ago

I want to do the functionality to support 2, 3, and 4, but how can I help us?

erkie commented 1 year ago

@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.

SantiiRepair commented 8 months ago

happy new year guys

Othie12 commented 5 months ago

Hello here @googollee , I'd also love to be added as a contributor to this project

sshaplygin commented 5 months ago

Hey, @Othie12 You could bring new update and can merge updates as can faster as possible