diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e633d22..468a743 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,11 +10,11 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: - go-version: '1.17.x' + go-version: '1.21.x' - name: golangci-lint uses: golangci/golangci-lint-action@v3 with: - version: v1.45.2 + version: v1.54.2 args: --timeout 3m0s build: name: Test with Go ${{ matrix.go-version }} @@ -23,15 +23,15 @@ jobs: if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository strategy: matrix: - go-version: [1.15, 1.16] + go-version: ["1.20", "1.21"] steps: - name: Install Go stable version - uses: actions/setup-go@v2 + uses: actions/setup-go@v4 with: go-version: ${{ matrix.go-version }} - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Test run: go test -v diff --git a/go.mod b/go.mod index 0e3f4f7..4cd28aa 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/centrifugal/protocol -go 1.19 +go 1.20 require ( github.com/mailru/easyjson v0.7.7 diff --git a/type.go b/type.go index 5e68db6..443990e 100644 --- a/type.go +++ b/type.go @@ -12,6 +12,89 @@ const ( TypeProtobuf Type = "protobuf" ) +type FrameType uint8 + +const ( + FrameTypeServerPing FrameType = iota + 1 + FrameTypeClientPong + + FrameTypePushConnect + FrameTypePushSubscribe + FrameTypePushPublication + FrameTypePushJoin + FrameTypePushLeave + FrameTypePushUnsubscribe + FrameTypePushMessage + FrameTypePushRefresh + FrameTypePushDisconnect + + FrameTypeConnect + FrameTypeSubscribe + FrameTypePublish + FrameTypeUnsubscribe + FrameTypeRPC + FrameTypePresence + FrameTypePresenceStats + FrameTypeHistory + FrameTypeRefresh + FrameTypeSubRefresh + FrameTypeSend +) + +func (f FrameType) String() string { + switch f { + case FrameTypeServerPing: + return "server_ping" + case FrameTypeClientPong: + return "client_pong" + + case FrameTypePushConnect: + return "push_connect" + case FrameTypePushSubscribe: + return "push_subscribe" + case FrameTypePushPublication: + return "push_publication" + case FrameTypePushJoin: + return "push_join" + case FrameTypePushLeave: + return "push_leave" + case FrameTypePushUnsubscribe: + return "push_unsubscribe" + case FrameTypePushMessage: + return "push_message" + case FrameTypePushRefresh: + return "push_refresh" + case FrameTypePushDisconnect: + return "push_disconnect" + + case FrameTypeConnect: + return "connect" + case FrameTypeSubscribe: + return "subscribe" + case FrameTypePublish: + return "publish" + case FrameTypeUnsubscribe: + return "unsubscribe" + case FrameTypeRPC: + return "rpc" + case FrameTypePresence: + return "presence" + case FrameTypePresenceStats: + return "presence_stats" + case FrameTypeHistory: + return "history" + case FrameTypeSubRefresh: + return "sub_refresh" + case FrameTypeRefresh: + return "refresh" + case FrameTypeSend: + return "send" + + default: + return "unknown" + } +} + var ( DefaultJsonPushEncoder = NewJSONPushEncoder() DefaultProtobufPushEncoder = NewProtobufPushEncoder()