69 lines
1.7 KiB
Go
69 lines
1.7 KiB
Go
|
package packet
|
||
|
|
||
|
import "github.com/googollee/go-socket.io/engineio/frame"
|
||
|
|
||
|
// Type is the type of packet
|
||
|
type Type int
|
||
|
|
||
|
const (
|
||
|
// OPEN is sent from the server when a new transport is opened (recheck).
|
||
|
OPEN Type = iota
|
||
|
// CLOSE is request the close of this transport but does not shutdown the
|
||
|
// connection itself.
|
||
|
CLOSE
|
||
|
// PING is sent by the client. Server should answer with a pong packet
|
||
|
// containing the same data.
|
||
|
PING
|
||
|
// PONG is sent by the server to respond to ping packets.
|
||
|
PONG
|
||
|
// MESSAGE is actual message, client and server should call their callbacks
|
||
|
// with the data.
|
||
|
MESSAGE
|
||
|
// UPGRADE is sent before engine.io switches a transport to test if server
|
||
|
// and client can communicate over this transport. If this test succeed,
|
||
|
// the client sends an upgrade packets which requests the server to flush
|
||
|
// its cache on the old transport and switch to the new transport.
|
||
|
UPGRADE
|
||
|
// NOOP is a noop packet. Used primarily to force a poll cycle when an
|
||
|
// incoming websocket connection is received.
|
||
|
NOOP
|
||
|
)
|
||
|
|
||
|
func (id Type) String() string {
|
||
|
switch id {
|
||
|
case OPEN:
|
||
|
return "open"
|
||
|
case CLOSE:
|
||
|
return "close"
|
||
|
case PING:
|
||
|
return "ping"
|
||
|
case PONG:
|
||
|
return "pong"
|
||
|
case MESSAGE:
|
||
|
return "message"
|
||
|
case UPGRADE:
|
||
|
return "upgrade"
|
||
|
case NOOP:
|
||
|
return "noop"
|
||
|
}
|
||
|
return "unknown"
|
||
|
}
|
||
|
|
||
|
// StringByte converts a PacketType to byte in string.
|
||
|
func (id Type) StringByte() byte {
|
||
|
return byte(id) + '0'
|
||
|
}
|
||
|
|
||
|
// BinaryByte converts a PacketType to byte in binary.
|
||
|
func (id Type) BinaryByte() byte {
|
||
|
return byte(id)
|
||
|
}
|
||
|
|
||
|
// ByteToPacketType converts a byte to PacketType.
|
||
|
func ByteToPacketType(b byte, typ frame.Type) Type {
|
||
|
if typ == frame.String {
|
||
|
b -= '0'
|
||
|
}
|
||
|
return Type(b)
|
||
|
}
|