34 lines
1.4 KiB
Markdown
34 lines
1.4 KiB
Markdown
## wscat
|
||
|
||
wscat - примитивный аналог npm пакета [wscat](https://www.npmjs.com/package/wscat).
|
||
|
||
Websocket - это двусторонний канал поверх tcp. wscat - это websocket клиент.
|
||
|
||
wscat принимает на вход единственный аргумент `-addr` - адрес websocket сервера.
|
||
После подключения программа начинает читать с stdin'а и отправлять пользовательские строки на сервер,
|
||
печатая все сообщения от сервера в stdout.
|
||
|
||
Клиент должен обрабатывать SIGINT и SIGTERM и плавно завершаться с кодом 0, дожидаясь горутин.
|
||
Для этого может пригодиться [context](https://golang.org/pkg/context/).
|
||
|
||
Обратите внимание на то, что exit code `go run` - это не exit code исполняемого файла.
|
||
|
||
## Пример
|
||
|
||
Публичный echo сервер:
|
||
```
|
||
✗ $GOPATH/bin/wscat -addr ws://ws.ifelse.io
|
||
abc
|
||
abcdef
|
||
def^C2022/04/13 22:23:42 received signal interrupt
|
||
```
|
||
```
|
||
✗ echo $?
|
||
0
|
||
```
|
||
|
||
## Ссылки
|
||
|
||
1. websocket: https://en.wikipedia.org/wiki/WebSocket
|
||
2. gorilla/websocket: https://pkg.go.dev/github.com/gorilla/websocket
|
||
3. signal shutdown: https://p.go.manytask.org/06-http/lecture.slide#20
|