Imp: enlarge time wheel span from 2m to 15m
Imp: enlarge time wheel span from 2m to 15m
4 files changed
tree: 3c8d4f4b1558f5a3fe06d7616bf36bfaa22f301a
  1. demo/
  2. .gitignore
  3. .gitmodules
  4. .travis.yml
  5. client.go
  6. connection.go
  7. const.go
  8. getty.go
  9. go.mod
  10. go.sum
  11. LICENSE
  12. logger.go
  13. options.go
  14. README.md
  15. server.go
  16. session.go
README.md

getty

a netty like asynchronous network I/O library

INTRO

Getty is a asynchronous network I/O library in golang. Getty is based on “ngo” whose author is sanbit. Getty works on tcp/udp/websocket network protocol and supplies a uniform interface.

In getty there are two goroutines in one connection(session), one reads tcp stream/udp packet/websocket package, the other handles logic process and writes response into network write buffer. If your logic process may take a long time, you should start a new logic process goroutine by yourself in codec.go:(Codec)OnMessage.

You can also handle heartbeat logic in codec.go:(Codec):OnCron. If you use tcp/udp, you should send hearbeat package by yourself, and then invoke session.go:(Session)UpdateActive to update its active time. Please check whether the tcp session has been timeout or not in codec.go:(Codec)OnCron by session.go:(Session)GetActive.

Whatever if you use websocket, you do not need to care about hearbeat request/response because Getty do this task in session.go:(Session)handleLoop by sending/received websocket ping/pong frames. You just need to check whether the websocket session has been timeout or not in codec.go:(Codec)OnCron by session.go:(Session)GetActive.

You can get code example in https://github.com/AlexStocks/getty-examples.

LICENCE

Apache License 2.0