forked from tencent-connect/botgo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
websocket.go
37 lines (30 loc) · 882 Bytes
/
websocket.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Package websocket SDK 需要实现的 websocket 定义。
package websocket
import (
"runtime"
"syscall"
"github.com/proudwang/botgo/dto"
"github.com/proudwang/botgo/log"
)
var (
// ClientImpl websocket 实现
ClientImpl WebSocket
// ResumeSignal 用于强制 resume 连接的信号量
ResumeSignal syscall.Signal
)
// Register 注册 websocket 实现
func Register(ws WebSocket) {
ClientImpl = ws
}
// RegisterResumeSignal 注册用于通知 client 将连接进行 resume 的信号
func RegisterResumeSignal(signal syscall.Signal) {
ResumeSignal = signal
}
// PanicBufLen Panic 堆栈大小
var PanicBufLen = 1024
// PanicHandler 处理websocket场景的 panic ,打印堆栈
func PanicHandler(e interface{}, session *dto.Session) {
buf := make([]byte, PanicBufLen)
buf = buf[:runtime.Stack(buf, false)]
log.Errorf("[PANIC]%s\n%v\n%s\n", session, e, buf)
}