Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jlarky/echo-server-in-go-language
Asynchronous echo server implemented on Go's sockets
https://github.com/jlarky/echo-server-in-go-language
Last synced: about 1 month ago
JSON representation
Asynchronous echo server implemented on Go's sockets
- Host: GitHub
- URL: https://github.com/jlarky/echo-server-in-go-language
- Owner: JLarky
- Created: 2011-04-11T19:05:52.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2011-04-11T19:33:38.000Z (over 13 years ago)
- Last Synced: 2023-04-11T17:40:55.965Z (over 1 year ago)
- Language: Go
- Homepage:
- Size: 87.9 KB
- Stars: 3
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Зачем
Суть в том, что на каждого подключившегося клиента запускается свой слушатель сокета listen_socket, соотвественно если несколько клиентов будут писать одновременно, то обрабатываться эти данные будут тоже одновременно (хотя честно говоря понятия не имеют так ли это с точки зрения Go).
Точно так же функция handle запускается не зависимо от других клиентов и собствено говоря пакетов одного и того же сокета. Единственное что гарантируется касательно очерёдности обработки пакетов одного сокета это то, что форк (go handle) процесса обработки будет в порядке прихода пакетов (что собственно говоря не должно даже гарантировать что первый форкнувшийся запустится первым).
Это поведение можно легко испортить если убрать слово "go" из строчки "go handle( <- data_ch );" и решать когда форкаться уже внутри handle. Это если вам вдруг важно в каком порядке обрабатывать данные, но это уже другая история.
# Ну так и зачем?
Чтобы выпендриться. Попоробуйте написать это на вашем любимом языке (кроме Erlang) то, что тут делается через каналы и go.
# Как запустить
make
# Как проверить, что работает
написать что-нибудь в порт 4321
например сделать
netcat localhost 4321