Code Monkey home page Code Monkey logo

Comments (13)

Linyuzai avatar Linyuzai commented on September 26, 2024

可以自定义WebSocketMessageCodecAdapter来处理编码和解码,参考ServletWebSocketMessageCodecAdapter

from concept.

chuchushijingxi avatar chuchushijingxi commented on September 26, 2024

可以自定义WebSocketMessageCodecAdapter来处理编码和解码,参考ServletWebSocketMessageCodecAdapter

websocket多个节点之间的消息转发后,发现会给消息带上转义字符。
目前复现的情况是第一次链接正常,后面多几次链接后通过websocket转发的json消息会带转义字符了。。。

from concept.

Linyuzai avatar Linyuzai commented on September 26, 2024

可以自定义WebSocketMessageCodecAdapter来处理编码和解码,参考ServletWebSocketMessageCodecAdapter

websocket多个节点之间的消息转发后,发现会给消息带上转义字符。 目前复现的情况是第一次链接正常,后面多几次链接后通过websocket转发的json消息会带转义字符了。。。

有可以复现问题的demo吗

from concept.

chuchushijingxi avatar chuchushijingxi commented on September 26, 2024

可以自定义WebSocketMessageCodecAdapter来处理编码和解码,参考ServletWebSocketMessageCodecAdapter

websocket多个节点之间的消息转发后,发现会给消息带上转义字符。 目前复现的情况是第一次链接正常,后面多几次链接后通过websocket转发的json消息会带转义字符了。。。

有可以复现问题的demo吗

我直接上的生产环境了。。没有demo

from concept.

Linyuzai avatar Linyuzai commented on September 26, 2024

有原始数据吗,转发配置的什么

调用流程可以说的详细一点吗,第一次链接和多几次链接是指什么

from concept.

chuchushijingxi avatar chuchushijingxi commented on September 26, 2024

有原始数据吗,转发配置的什么

调用流程可以说的详细一点吗,第一次链接和多几次链接是指什么

第一次连接是指服务端和客户端进行第一次 websocket 通信,只会在集群的情况下出现

我的websocket地址类似于

  • ws://127.0.0.1:9999/signaling/concept-websocket/connect?roomId=1&connectType=client&accessToken=88b62c0c-9152-418e-8fea-d647cdfbc95b

是可以断开连接后继续通过这个地址重新建立连接,当第二次或多次重新连接后就会出现转义字符

配置信息

concept:
  websocket:
    type: auto
    server:
      default-endpoint:
        enabled: true
        prefix: concept-websocket
        path-selector:
          enabled: false
        user-selector:
          enabled: false
        room-selector:
          enabled: true
      message:
        retry:
          times: 0
          period: 0
      heartbeat:
        enabled: true
        period: 60000
        timeout: 210000
    load-balance:
      subscriber-master: websocket
      subscriber-slave: none
      message:
        retry:
          times: 0
          period: 0
      monitor:
        enabled: true
        period: 30000
        logger: false
      heartbeat:
        enabled: true
        period: 60000
        timeout: 210000
    executor:
      thread-pool-size: 1

这是正常的

{"from":"1754950558699139072","sdp":"v\u003d0\r\no\u003d- 2793570508788531472 2 IN IP4 127.0.0.1\r\ns\u003d-\r\nt\u003d0 0\r\na\u003dgroup:BUNDLE 0 1 2\r\na\u003dextmap-allow-mixed\r\na\u003dmsid-semantic: WMS ARDAMS\r\nm\u003daudio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126\r\nc\u003dIN IP4 0.0.0.0\r\na\u003drtcp:9 IN IP4 0.0.0.0\r\na\u003dice-ufrag:mjtQ\r\na\u003dice-pwd:JzipNDHoOhDECeWJuygpwxtl\r\na\u003dice-options:trickle renomination\r\na\u003dfingerprint:sha-256 99:D2:65:31:24:BF:9D:C0:EB:F1:6E:37:33:F8:27:C0:59:D6:36:51:BB:CC:4F:5E:CF:3E:60:98:E5:26:5C:89\r\na\u003dsetup:active\r\na\u003dmid:0\r\na\u003dextmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na\u003dextmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na\u003dextmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na\u003dextmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na\u003dsendonly\r\na\u003dmsid:ARDAMS ARDAMSa0\r\na\u003drtcp-mux\r\na\u003drtpmap:111 opus/48000/2\r\na\u003drtcp-fb:111 transport-cc\r\na\u003dfmtp:111 minptime\u003d10;useinbandfec\u003d1\r\na\u003drtpmap:63 red/48000/2\r\na\u003dfmtp:63 111/111\r\na\u003drtpmap:9 G722/8000\r\na\u003drtpmap:0 PCMU/8000\r\na\u003drtpmap:8 PCMA/8000\r\na\u003drtpmap:13 CN/8000\r\na\u003drtpmap:110 telephone-event/48000\r\na\u003drtpmap:126 telephone-event/8000\r\na\u003dssrc:3857224435 cname:1Oint1GszJ8j44Ag\r\na\u003dssrc:3857224435 msid:ARDAMS ARDAMSa0\r\nm\u003dvideo 9 UDP/TLS/RTP/SAVPF 106 116 118 107 117\r\nc\u003dIN IP4 0.0.0.0\r\na\u003drtcp:9 IN IP4 0.0.0.0\r\na\u003dice-ufrag:mjtQ\r\na\u003dice-pwd:JzipNDHoOhDECeWJuygpwxtl\r\na\u003dice-options:trickle renomination\r\na\u003dfingerprint:sha-256 99:D2:65:31:24:BF:9D:C0:EB:F1:6E:37:33:F8:27:C0:59:D6:36:51:BB:CC:4F:5E:CF:3E:60:98:E5:26:5C:89\r\na\u003dsetup:active\r\na\u003dmid:1\r\na\u003dextmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na\u003dextmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na\u003dextmap:13 urn:3gpp:video-orientation\r\na\u003dextmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na\u003dextmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na\u003dextmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na\u003dextmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na\u003dextmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na\u003dextmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na\u003dextmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na\u003dextmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na\u003dsendonly\r\na\u003dmsid:ARDAMS ARDAMSv0\r\na\u003drtcp-mux\r\na\u003drtcp-rsize\r\na\u003drtpmap:106 H264/90000\r\na\u003drtcp-fb:106 goog-remb\r\na\u003drtcp-fb:106 transport-cc\r\na\u003drtcp-fb:106 ccm fir\r\na\u003drtcp-fb:106 nack\r\na\u003drtcp-fb:106 nack pli\r\na\u003dfmtp:106 level-asymmetry-allowed\u003d1;packetization-mode\u003d1;profile-level-id\u003d42e01f\r\na\u003drtpmap:116 red/90000\r\na\u003drtpmap:118 ulpfec/90000\r\na\u003drtpmap:107 rtx/90000\r\na\u003dfmtp:107 apt\u003d106\r\na\u003drtpmap:117 rtx/90000\r\na\u003dfmtp:117 apt\u003d116\r\na\u003dssrc-group:FID 1529951312 4153817892\r\na\u003dssrc:1529951312 cname:1Oint1GszJ8j44Ag\r\na\u003dssrc:1529951312 msid:ARDAMS ARDAMSv0\r\na\u003dssrc:4153817892 cname:1Oint1GszJ8j44Ag\r\na\u003dssrc:4153817892 msid:ARDAMS ARDAMSv0\r\nm\u003dapplication 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc\u003dIN IP4 0.0.0.0\r\na\u003dice-ufrag:mjtQ\r\na\u003dice-pwd:JzipNDHoOhDECeWJuygpwxtl\r\na\u003dice-options:trickle renomination\r\na\u003dfingerprint:sha-256 99:D2:65:31:24:BF:9D:C0:EB:F1:6E:37:33:F8:27:C0:59:D6:36:51:BB:CC:4F:5E:CF:3E:60:98:E5:26:5C:89\r\na\u003dsetup:active\r\na\u003dmid:2\r\na\u003dsctp-port:5000\r\na\u003dmax-message-size:262144\r\n","to":"1759456413956091904","messageID":1004,"roomID":"4a35794c57fbb21471068e0006e5c0201b4cc198ca808820cdc5300473d4fcd864d5421a5634935f241adf501d2e7a97","timestamp":1708325462201,"version":1}

出现转义字符后的,看起来像是json转换了多次

{\\"from\\":\\"1752874667655475200\\",\\"messageID\\":1003,\\"roomID\\":\\"1c04f0c501a3aaae9b0538dc90c8fbd256670e557dac9f2d395a3992d9945488\\",\\"sdp\\":\\"v=0\\\\r\\\\no=- 4753660358661148395 2 IN IP4 127.0.0.1\\\\r\\\\ns=-\\\\r\\\\nt=0 0\\\\r\\\\na=group:BUNDLE 0 1 2\\\\r\\\\na=extmap-allow-mixed\\\\r\\\\na=msid-semantic: WMS\\\\r\\\\nm=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126\\\\r\\\\nc=IN IP4 0.0.0.0\\\\r\\\\na=rtcp:9 IN IP4 0.0.0.0\\\\r\\\\na=ice-ufrag:2bJ2\\\\r\\\\na=ice-pwd:Cx0ZL7b1ZS5JJQ9IMnKvs+RH\\\\r\\\\na=ice-options:trickle\\\\r\\\\na=fingerprint:sha-256 D8:3F:32:54:B3:C5:64:B7:BF:16:9C:12:E6:1C:2D:15:B5:4C:37:DF:69:03:25:75:59:C9:C9:41:22:01:9C:59\\\\r\\\\na=setup:actpass\\\\r\\\\na=mid:0\\\\r\\\\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\\\\r\\\\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\\\r\\\\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\\\r\\\\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\\\\r\\\\na=recvonly\\\\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:63 red/48000/2\\\\r\\\\na=fmtp:63 111/111\\\\r\\\\na=rtpmap:9 G722/8000\\\\r\\\\na=rtpmap:0 PCMU/8000\\\\r\\\\na=rtpmap:8 PCMA/8000\\\\r\\\\na=rtpmap:13 CN/8000\\\\r\\\\na=rtpmap:110 telephone-event/48000\\\\r\\\\na=rtpmap:126 telephone-event/8000\\\\r\\\\nm=video 9 UDP/TLS/RTP/SAVPF 102 104 106 108 127 39 41 43 112 114 63 116 118 49 103 105 107 109 125 40 42 44 113 115 117\\\\r\\\\nc=IN IP4 0.0.0.0\\\\r\\\\na=rtcp:9 IN IP4 0.0.0.0\\\\r\\\\na=ice-ufrag:2bJ2\\\\r\\\\na=ice-pwd:Cx0ZL7b1ZS5JJQ9IMnKvs+RH\\\\r\\\\na=ice-options:trickle\\\\r\\\\na=fingerprint:sha-256 D8:3F:32:54:B3:C5:64:B7:BF:16:9C:12:E6:1C:2D:15:B5:4C:37:DF:69:03:25:75:59:C9:C9:41:22:01:9C:59\\\\r\\\\na=setup:actpass\\\\r\\\\na=mid:1\\\\r\\\\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\\\\r\\\\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\\\r\\\\na=extmap:13 urn:3gpp:video-orientation\\\\r\\\\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\\\r\\\\na=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\\\\r\\\\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\\\\r\\\\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\\\\r\\\\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\\\\r\\\\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\\\\r\\\\na=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\\\\r\\\\na=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\\\\r\\\\na=recvonly\\\\r\\\\na=rtcp-mux\\\\r\\\\na=rtcp-rsize\\\\r\\\\na=rtpmap:102 H264/90000\\\\r\\\\na=rtcp-fb:102 goog-remb\\\\r\\\\na=rtcp-fb:102 transport-cc\\\\r\\\\na=rtcp-fb:102 ccm fir\\\\r\\\\na=rtcp-fb:102 nack\\\\r\\\\na=rtcp-fb:102 nack pli\\\\r\\\\na=fmtp:102 level-asymmetry-allowed=1;packetiza tion-mode=1;profile-level-id=42001f\\\\r\\\\na=rtpmap:103 rtx/90000\\\\r\\\\na=fmtp:103 apt=102\\\\r\\\\na=rtpmap:104 H264/90000\\\\r\\\\na=rtcp-fb:104 goog-remb\\\\r\\\\na=rtcp-fb:104 transport-cc\\\\r\\\\na=rtcp-fb:104 ccm fir\\\\r\\\\na=rtcp-fb:104 nack\\\\r\\\\na=rtcp-fb:104 nack pli\\\\r\\\\na=fmtp:104 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\\\\r\\\\na=rtpmap:105 rtx/90000\\\\r\\\\na=fmtp:105 apt=104\\\\r\\\\na=rtpmap:106 H264/90000\\\\r\\\\na=rtcp-fb:106 goog-remb\\\\r\\\\na=rtcp-fb:106 transport-cc\\\\r\\\\na=rtcp-fb:106 ccm fir\\\\r\\\\na=rtcp-fb:106 nack\\\\r\\\\na=rtcp-fb:106 nack pli\\\\r\\\\na=fmtp:106 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\\\\r\\\\na=rtpmap:107 rtx/90000\\\\r\\\\na=fmtp:107 apt=106\\\\r\\\\na=rtpmap:108 H264/90000\\\\r\\\\na=rtcp-fb:108 goog-remb\\\\r\\\\na=rtcp-fb:108 transport-cc\\\\r\\\\na=rtcp-fb:108 ccm fir\\\\r\\\\na=rtcp-fb:108 nack\\\\r\\\\na=rtcp-fb:108 nack pli\\\\r\\\\na=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\\\\r\\\\na=rtpmap:109 rtx/90000\\\\r\\\\na=fmtp:109 apt=108\\\\r\\\\na=rtpmap:127 H264/90000\\\\r\\\\na=rtcp-fb:127 goog-remb\\\\r\\\\na=rtcp-fb:127 transport-cc\\\\r\\\\na=rtcp-fb:127 ccm fir\\\\r\\\\na=rtcp-fb:127 nack\\\\r\\\\na=rtcp-fb:127 nack pli\\\\r\\\\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f\\\\r\\\\na=rtpmap:125 rtx/90000\\\\r\\\\na=fmtp:1

from concept.

chuchushijingxi avatar chuchushijingxi commented on September 26, 2024

有原始数据吗,转发配置的什么

调用流程可以说的详细一点吗,第一次链接和多几次链接是指什么

我的服务相当于一个中间商

我会给 A、B 两个服务提供 websocket 连接,A 和 B 会同时建立连接
我所做的就是给 A 发送的消息转发给 B,B 发送的消息转发给 A

from concept.

Linyuzai avatar Linyuzai commented on September 26, 2024

有原始数据吗,转发配置的什么
调用流程可以说的详细一点吗,第一次链接和多几次链接是指什么

我的服务相当于一个中间商

我会给 A、B 两个服务提供 websocket 连接,A 和 B 会同时建立连接 我所做的就是给 A 发送的消息转发给 B,B 发送的消息转发给 A

就是说你的服务是个集群,A和B会连上你的ws,你收到A的消息就转发给B,收到B的消息就转发给A

from concept.

chuchushijingxi avatar chuchushijingxi commented on September 26, 2024

有原始数据吗,转发配置的什么
调用流程可以说的详细一点吗,第一次链接和多几次链接是指什么

我的服务相当于一个中间商
我会给 A、B 两个服务提供 websocket 连接,A 和 B 会同时建立连接 我所做的就是给 A 发送的消息转发给 B,B 发送的消息转发给 A

就是说你的服务是个集群,A和B会连上你的ws,你收到A的消息就转发给B,收到B的消息就转发给A

嗯嗯,A 和 B 可以看作是两个用户,因为可能通过 nginx 代理后,他俩连上了不同机器的 websocket
在转发的过程中我会根据收到的消息封装新的消息结构转发
比方说 A 发送一条 messageId 为 1001 的消息,我会重新封装一个 messageId 为 1002 的消息通过

concept.send(new RoomMessage(jsonStr, roomId + ClientTypeEnum.CLIENT_TYPE.getType()));

进行发送

from concept.

Linyuzai avatar Linyuzai commented on September 26, 2024

升级到2.4.0试一下

from concept.

chuchushijingxi avatar chuchushijingxi commented on September 26, 2024

升级到2.4.0试一下

这个是什么问题导致的呀

from concept.

Linyuzai avatar Linyuzai commented on September 26, 2024

升级到2.4.0试一下

这个是什么问题导致的呀

支持byte[]消息之后,处理消息解析的一个bug

from concept.

chuchushijingxi avatar chuchushijingxi commented on September 26, 2024

升级到2.4.0试一下

这个是什么问题导致的呀

支持byte[]消息之后,处理消息解析的一个bug

太强了,已经解决了,谢谢大佬

from concept.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.