websocket/example/server.go

86 lines
1.9 KiB
Go

// Package main ...
//
// Description : 启动一个ws server 的示例
//
// Author : go_developer@163.com<张德满>
//
// Date : 2021-03-28 3:57 下午
package main
import (
"fmt"
"github.com/go-developer/gopkg/logger"
"go.uber.org/zap/zapcore"
"github.com/go-developer/websocket/config"
"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),
}
}
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) error {
message.Response(ctx, map[string]interface{}{"ping": "pong"})
return nil
}