|
|
@ -126,9 +126,9 @@ func writeMessage(c *op.Client, v op.Message) error {
|
|
|
|
return nil
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func handleReaderMessage(c *op.Client, l *log.Entry) error {
|
|
|
|
func leaveWebRTC(c *op.Client) {
|
|
|
|
defer func() {
|
|
|
|
|
|
|
|
if c.RTCJoined() {
|
|
|
|
if c.RTCJoined() {
|
|
|
|
|
|
|
|
c.SetRTCJoined(false)
|
|
|
|
c.SetRTCJoined(false)
|
|
|
|
c.SetRTCJoined(false)
|
|
|
|
_ = c.Broadcast(&pb.Message{
|
|
|
|
_ = c.Broadcast(&pb.Message{
|
|
|
|
Type: pb.MessageType_WEBRTC_LEAVE,
|
|
|
|
Type: pb.MessageType_WEBRTC_LEAVE,
|
|
|
@ -143,6 +143,11 @@ func handleReaderMessage(c *op.Client, l *log.Entry) error {
|
|
|
|
},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func handleReaderMessage(c *op.Client, l *log.Entry) error {
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
|
|
|
|
leaveWebRTC(c)
|
|
|
|
c.Close()
|
|
|
|
c.Close()
|
|
|
|
if r := recover(); r != nil {
|
|
|
|
if r := recover(); r != nil {
|
|
|
|
l.Errorf("ws: panic: %v", r)
|
|
|
|
l.Errorf("ws: panic: %v", r)
|
|
|
@ -221,6 +226,7 @@ func handleElementMsg(cli *op.Client, msg *pb.Message) error {
|
|
|
|
|
|
|
|
|
|
|
|
func handleWebRTCOffer(cli *op.Client, data *pb.WebRTCData) error {
|
|
|
|
func handleWebRTCOffer(cli *op.Client, data *pb.WebRTCData) error {
|
|
|
|
if !cli.User().HasRoomWebRTCPermission(cli.Room()) {
|
|
|
|
if !cli.User().HasRoomWebRTCPermission(cli.Room()) {
|
|
|
|
|
|
|
|
leaveWebRTC(cli)
|
|
|
|
return sendErrorMessage(cli, "no permission to send webrtc offer")
|
|
|
|
return sendErrorMessage(cli, "no permission to send webrtc offer")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -249,6 +255,7 @@ func handleWebRTCOffer(cli *op.Client, data *pb.WebRTCData) error {
|
|
|
|
|
|
|
|
|
|
|
|
func handleWebRTCAnswer(cli *op.Client, data *pb.WebRTCData) error {
|
|
|
|
func handleWebRTCAnswer(cli *op.Client, data *pb.WebRTCData) error {
|
|
|
|
if !cli.User().HasRoomWebRTCPermission(cli.Room()) {
|
|
|
|
if !cli.User().HasRoomWebRTCPermission(cli.Room()) {
|
|
|
|
|
|
|
|
leaveWebRTC(cli)
|
|
|
|
return sendErrorMessage(cli, "no permission to send webrtc answer")
|
|
|
|
return sendErrorMessage(cli, "no permission to send webrtc answer")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -277,6 +284,7 @@ func handleWebRTCAnswer(cli *op.Client, data *pb.WebRTCData) error {
|
|
|
|
|
|
|
|
|
|
|
|
func handleWebRTCIceCandidate(cli *op.Client, data *pb.WebRTCData) error {
|
|
|
|
func handleWebRTCIceCandidate(cli *op.Client, data *pb.WebRTCData) error {
|
|
|
|
if !cli.User().HasRoomWebRTCPermission(cli.Room()) {
|
|
|
|
if !cli.User().HasRoomWebRTCPermission(cli.Room()) {
|
|
|
|
|
|
|
|
leaveWebRTC(cli)
|
|
|
|
return sendErrorMessage(cli, "no permission to send webrtc ice candidate")
|
|
|
|
return sendErrorMessage(cli, "no permission to send webrtc ice candidate")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -305,6 +313,7 @@ func handleWebRTCIceCandidate(cli *op.Client, data *pb.WebRTCData) error {
|
|
|
|
|
|
|
|
|
|
|
|
func handleWebRTCJoin(cli *op.Client) error {
|
|
|
|
func handleWebRTCJoin(cli *op.Client) error {
|
|
|
|
if !cli.User().HasRoomWebRTCPermission(cli.Room()) {
|
|
|
|
if !cli.User().HasRoomWebRTCPermission(cli.Room()) {
|
|
|
|
|
|
|
|
leaveWebRTC(cli)
|
|
|
|
return sendErrorMessage(cli, "no permission to join webrtc")
|
|
|
|
return sendErrorMessage(cli, "no permission to join webrtc")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -325,6 +334,7 @@ func handleWebRTCJoin(cli *op.Client) error {
|
|
|
|
|
|
|
|
|
|
|
|
func handleWebRTCLeave(cli *op.Client) error {
|
|
|
|
func handleWebRTCLeave(cli *op.Client) error {
|
|
|
|
if !cli.User().HasRoomWebRTCPermission(cli.Room()) {
|
|
|
|
if !cli.User().HasRoomWebRTCPermission(cli.Room()) {
|
|
|
|
|
|
|
|
leaveWebRTC(cli)
|
|
|
|
return sendErrorMessage(cli, "no permission to leave webrtc")
|
|
|
|
return sendErrorMessage(cli, "no permission to leave webrtc")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|