implement ws reconnect
This commit is contained in:
@ -51,7 +51,8 @@ func New(options Options) (*SignalingServer, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (signalingServer SignalingServer) handleStream(ctx context.Context, name string, errGroup *errgroup.Group, stream proto.Signaling_BiuServer) func() error {
|
||||
func (signalingServer SignalingServer) handleStream(ctx context.Context, errGroup *errgroup.Group, stream proto.Signaling_BiuServer) func() error {
|
||||
var name string
|
||||
return func() error {
|
||||
for {
|
||||
msg, err := stream.Recv()
|
||||
@ -60,6 +61,11 @@ func (signalingServer SignalingServer) handleStream(ctx context.Context, name st
|
||||
} else if err == nil {
|
||||
switch innerMsg := msg.Message.(type) {
|
||||
case *proto.SignalingMessage_Bootstrap:
|
||||
if msg.Sender != "" {
|
||||
name = msg.Sender
|
||||
} else {
|
||||
name = signalingServer.names.Generate()
|
||||
}
|
||||
errGroup.Go(signalingServer.handleRedisPubSub(ctx, name, msg.Room, stream))
|
||||
case *proto.SignalingMessage_DiscoverRequest:
|
||||
// ignore msg.Receiver, from sender to whole channel
|
||||
@ -219,11 +225,9 @@ func (signalingServer SignalingServer) Biu(stream proto.Signaling_BiuServer) err
|
||||
ctx, cancel := context.WithCancel(stream.Context())
|
||||
defer cancel()
|
||||
|
||||
name := signalingServer.names.Generate()
|
||||
|
||||
errGroup := &errgroup.Group{}
|
||||
|
||||
errGroup.Go(signalingServer.handleStream(ctx, name, errGroup, stream))
|
||||
errGroup.Go(signalingServer.handleStream(ctx, errGroup, stream))
|
||||
|
||||
return errGroup.Wait()
|
||||
}
|
||||
|
Reference in New Issue
Block a user