gosocketio/vendor/github.com/googollee/go-socket.io/engineio/packet/packet.go

69 lines
1.7 KiB
Go
Raw Normal View History

2023-11-30 17:38:20 +08:00
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)
}