sta / websocket-sharp

A C# implementation of the WebSocket protocol client and server
http://sta.github.io/websocket-sharp
MIT License
5.69k stars 1.66k forks source link

Fail to send JSON Message "WebRTC Signaling" #364

Open EbramTawfik opened 7 years ago

EbramTawfik commented 7 years ago

I am using Websocket-sharp 1.0.3-rc11 for signaling from webrtc client to webrtc server but while I am trying to send this JSON message it fails.

Code :

        websocketClient = new WebSocket("ws://" + IP + "/api/wipc", pro);
        websocketClient.SslConfiguration.EnabledSslProtocols = SslProtocols.Tls12 | SslProtocols.Tls11 | SslProtocols.Tls; 
         websocketClient.Send(Message);

JSON Message :

{ "method": "set", "uri": "/ml/connection/1511293685/sdp_offer", "replyto": "/_ml/app/1511293685/3", "value": { "type": "offer", "sdp": "v=0\r\no=- 1795538033316388224 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio video\r\na=msid-semantic: WMS stream_label\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:th9h\r\na=ice-pwd:s6nD/LZNLSyhWbxYp/SGprw7\r\na=ice-options:trickle\r\na=fingerprint:sha-256 01:0B:97:35:1C:92:D8:B6:79:58:7C:E7:50:57:50:EE:BC:A8:A0:AD:1B:51:D0:65:37:DA:5D:10:CF:7A:51:17\r\na=setup:actpass\r\na=mid:audio\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=sendrecv\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:102 ILBC/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:112 telephone-event/32000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:1635746035 cname:s46x4jXVAs9ReGkE\r\na=ssrc:1635746035 msid:stream_label audio_label\r\na=ssrc:1635746035 mslabel:stream_label\r\na=ssrc:1635746035 label:audio_label\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 98 100 127 97 99 101\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:th9h\r\na=ice-pwd:s6nD/LZNLSyhWbxYp/SGprw7\r\na=ice-options:trickle\r\na=fingerprint:sha-256 01:0B:97:35:1C:92:D8:B6:79:58:7C:E7:50:57:50:EE:BC:A8:A0:AD:1B:51:D0:65:37:DA:5D:10:CF:7A:51:17\r\na=setup:actpass\r\na=mid:video\r\na=extmap:2 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 urn:3gpp:video-orientation\r\na=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/p.layout-delay\r\na=sendrecv\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtpmap:100 red/90000\r\na=rtpmap:127 ulpfec/90000\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=ssrc-group:FID 2450577238 3843200623\r\na=ssrc:2450577238 cname:s46x4jXVAs9ReGkE\r\na=ssrc:2450577238 msid:stream_label video_label\r\na=ssrc:2450577238 mslabel:stream_label\r\na=ssrc:2450577238 label:video_label\r\na=ssrc:3843200623 cname:s46x4jXVAs9ReGkE\r\na=ssrc:3843200623 msid:stream_label video_label\r\na=ssrc:3843200623 mslabel:stream_label\r\na=ssrc:3843200623 label:video_label\r\n" } }

EbramTawfik commented 7 years ago

I found that is the issue FragmentLength = 1016 and this message length is greater than FragmentLength and by increasing FragmentLength to 4096 it worked fine.

https://github.com/sta/websocket-sharp/blob/master/websocket-sharp/WebSocket.cs#L155