40 lines
886 B
Go
40 lines
886 B
Go
package data
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"ky-go-kratos/app/websocket/internal/biz"
|
|
|
|
"github.com/go-kratos/kratos/v2/log"
|
|
)
|
|
|
|
// WebSocketRepo is a WebSocket repository.
|
|
type WebSocketRepo struct {
|
|
data *Data
|
|
log *log.Helper
|
|
}
|
|
|
|
// NewWebSocketRepo new a WebSocket repository.
|
|
func NewWebSocketRepo(data *Data, logger log.Logger) biz.WebSocketRepo {
|
|
return &WebSocketRepo{
|
|
data: data,
|
|
log: log.NewHelper(logger),
|
|
}
|
|
}
|
|
|
|
// Message represents a WebSocket message structure
|
|
type Message struct {
|
|
Type string `json:"type"`
|
|
Content json.RawMessage `json:"content"`
|
|
}
|
|
|
|
// SendMessage 发送消息到 Kafka
|
|
func (r *WebSocketRepo) SendMessage(ctx context.Context, message []byte) error {
|
|
err := r.data.kafka.SendToKafkaMessage(ctx, "websocket", message)
|
|
if err != nil {
|
|
r.log.Errorf("failed to send message to kafka: %v", err)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|