forked from googollee/go-socket.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpacket.go
130 lines (103 loc) · 1.73 KB
/
packet.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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package socketio
import (
"encoding/json"
)
const (
PACKET_DISCONNECT = iota
PACKET_CONNECT
PACKET_HEARTBEAT
PACKET_MESSAGE
PACKET_JSONMESSAGE
PACKET_EVENT
PACKET_ACK
PACKET_ERROR
PACKET_NOOP
)
type MessageType uint8
type Packet interface {
Id() int
Type() MessageType
EndPoint() string
Ack() bool
}
type packetCommon struct {
id int
endPoint string
ack bool
}
func (p *packetCommon) Id() int {
return p.id
}
func (p *packetCommon) EndPoint() string {
return p.endPoint
}
func (p *packetCommon) Ack() bool {
return p.ack
}
type disconnectPacket struct {
packetCommon
}
func (*disconnectPacket) Type() MessageType {
return PACKET_DISCONNECT
}
type connectPacket struct {
packetCommon
query string
}
func (*connectPacket) Type() MessageType {
return PACKET_CONNECT
}
type heartbeatPacket struct {
packetCommon
}
func (*heartbeatPacket) Type() MessageType {
return PACKET_HEARTBEAT
}
type messageMix interface {
Packet
Data() []byte
}
type messagePacket struct {
packetCommon
data []byte
}
func (*messagePacket) Type() MessageType {
return PACKET_MESSAGE
}
func (p *messagePacket) Data() []byte {
return p.data
}
type jsonPacket struct {
packetCommon
data []byte
}
func (*jsonPacket) Type() MessageType {
return PACKET_JSONMESSAGE
}
func (p *jsonPacket) Data() []byte {
return p.data
}
type eventPacket struct {
packetCommon
name string
args json.RawMessage
}
func (*eventPacket) Type() MessageType {
return PACKET_EVENT
}
type ackPacket struct {
packetCommon
ackId int
args json.RawMessage
}
func (*ackPacket) Type() MessageType {
return PACKET_ACK
}
type errorPacket struct {
packetCommon
reason string
advice string
}
func (*errorPacket) Type() MessageType {
return PACKET_ERROR
}