go-kratos/app/websocket/internal/data/websocket.go

40 lines
890 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 sends a message to 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
}