diff --git a/README.md b/README.md index 3bfb5d8..6a329eb 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,118 @@ # 介绍 +
+ +
+ ## 作用 基础的websocket长连接框架,屏蔽ws基础细节,只关注业务开发即可 + + +## 运行项目 + +### 方案一 + +```shell +git clone git@github.com:go-developer/websocket. +cd websocket/example +go run server.go +``` + +### 方案二 + +- 创建项目 : mkdir my_webxocket && cd my_websocket && go mod init my_websocket +- 创建server.go, 并将下面的代码放入server.go +- go run server.go + +```go +package main + +import ( + "fmt" + + "github.com/go-developer/websocket/message" + + "github.com/go-developer/websocket" + "github.com/go-developer/websocket/abstract" + "github.com/go-developer/websocket/context" +) + +func main() { + websocket.NewWebsocketServe(&Example{}) +} + +type Example struct { +} + +func (e Example) Connect(ctx *context.WSContext) error { + fmt.Println("建立连接成功") + message.Response(ctx, map[string]interface{}{"say": "hello world!", "cid": ctx.ConnectionID}) + return nil +} + +func (e Example) Disconnect(ctx *context.WSContext) { + fmt.Println("断开连接成功") +} + +func (e Example) Close(ctx *context.WSContext, code int, message string) error { + fmt.Println("关闭连接成功") + return nil +} + +func (e Example) HandshakeURL() []string { + return []string{ + "/ws/test", + } +} + +func (e Example) GetCommandList() []abstract.ICommand { + return []abstract.ICommand{&exampleCommand{}} +} + +func (e Example) GetModuleFlag() string { + return "example" +} + +func (e Example) GetServerPort() int { + return 10099 +} + +func (e Example) GetWSServerConfig() []config.SetWSServerConfig { + return []config.SetWSServerConfig{ + config.SetWSServerLogEnable("./logs", e.GetModuleFlag()+".log", zapcore.DebugLevel, logger.TimeIntervalTypeHour), + config.EnablePprof(10100), + } +} + +type exampleCommand struct { +} + +func (e exampleCommand) GetCommand() string { + return "ping" +} + +func (e exampleCommand) GetConfigOption() []config.SetCommandConfig { + return []config.SetCommandConfig{config.ClosePushCommandErrorMessage()} +} + + +func (e exampleCommand) Execute(ctx *context.WSContext, data []byte) (interface{},error) { + return map[string]interface{}{"ping": "pong"}, nil +} +``` + +## 测试 + +推荐一个长连接在线测试网站 : [Websocket长连接在线测试](http://www.websocket-test.com) + +连接地址框内输入 : **`ws://localhost:10099/example/ws/test`** + +点击连接, 会收到类似 `{\cid\:\19216806-20210416220530-bb563e745de89e595e02bb7b791677b0\,\say\:\hello world!\}` 服务端响应 + +在输入框内输入 **`{"command":"ping"}`** , 会收到服务端响应 : `{\ping\:\pong\}` + +## 完成 + +至此一个基本的场链接服务已经成功搭建,并开始运行 + diff --git a/logo.jpg b/logo.jpg new file mode 100644 index 0000000..02246f3 Binary files /dev/null and b/logo.jpg differ