Skip to content

Commit

Permalink
Merge pull request #2829 from withchao/v3.8-js-sdk-only
Browse files Browse the repository at this point in the history
feat: support text ping pong
  • Loading branch information
withchao authored Nov 4, 2024
2 parents ee04c15 + b49a8dd commit bf00aa7
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 3 deletions.
30 changes: 27 additions & 3 deletions internal/msggateway/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ package msggateway

import (
"context"
"encoding/json"
"fmt"
"runtime/debug"
"sync"
Expand Down Expand Up @@ -159,9 +160,12 @@ func (c *Client) readMessage() {
return
}
case MessageText:
c.closedErr = ErrNotSupportMessageProtocol
return

_ = c.conn.SetReadDeadline(pongWait)
parseDataErr := c.handlerTextMessage(message)
if parseDataErr != nil {
c.closedErr = parseDataErr
return
}
case PingMessage:
err := c.writePongMsg("")
log.ZError(c.ctx, "writePongMsg", err)
Expand Down Expand Up @@ -419,3 +423,23 @@ func (c *Client) writePongMsg(appData string) error {

return errs.Wrap(err)
}

func (c *Client) handlerTextMessage(b []byte) error {
var msg TextMessage
if err := json.Unmarshal(b, &msg); err != nil {
return err
}
switch msg.Type {
case TextPong:
return nil
case TextPing:
msg.Type = TextPong
msgData, err := json.Marshal(msg)
if err != nil {
return err
}
return c.conn.WriteMessage(MessageText, msgData)
default:
return fmt.Errorf("not support message type %s", msg.Type)
}
}
11 changes: 11 additions & 0 deletions internal/msggateway/message_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ package msggateway

import (
"context"
"encoding/json"
"sync"

"github.com/go-playground/validator/v10"
Expand All @@ -31,6 +32,16 @@ import (
"github.com/openimsdk/tools/utils/jsonutil"
)

const (
TextPing = "ping"
TextPong = "pong"
)

type TextMessage struct {
Type string `json:"type"`
Body json.RawMessage `json:"body"`
}

type Req struct {
ReqIdentifier int32 `json:"reqIdentifier" validate:"required"`
Token string `json:"token"`
Expand Down

0 comments on commit bf00aa7

Please sign in to comment.