{"id":284,"date":"2024-06-07T19:21:12","date_gmt":"2024-06-07T11:21:12","guid":{"rendered":"https:\/\/blessingcr.com\/?p=284"},"modified":"2024-06-07T19:21:12","modified_gmt":"2024-06-07T11:21:12","slug":"websocket-spring-gateway-%e8%bd%ac%e5%8f%91%ef%bc%8c%e9%97%ae%e9%a2%98%e5%a4%84%e7%90%86","status":"publish","type":"post","link":"https:\/\/blessingcr.com\/?p=284","title":{"rendered":"WebSocket Spring gateway \u8f6c\u53d1\uff0c\u95ee\u9898\u5904\u7406"},"content":{"rendered":"<h3>1. \u8f6c\u53d1\u5904\u7406<\/h3>\n<p>Gateway \u914d\u7f6e\u4e2d<\/p>\n<pre><code>   routes:\n\n\u200b    - id: business-backend-orch-server-websocket # \u8def\u7531\u7684\u7f16\u53f7\n\n\u200b     uri: lb:\/\/business-backend-orch-server\n\n\u200b     predicates: # \u65ad\u8a00\uff0c\u4f5c\u4e3a\u8def\u7531\u7684\u5339\u914d\u6761\u4ef6\uff0c\u5bf9\u5e94 RouteDefinition \u6570\u7ec4\n\n\u200b       - Path=\/ws<\/code><\/pre>\n<p>\u6ce8\u610f uri\u4e2d\u4e5f\u53ef\u4ee5\u5199\u4e3a lb:ws:<\/p>\n<h3>2. \u62e6\u622a\u5668\u5904\u7406<\/h3>\n<p>\u6240\u6709\u4e0d\u9700\u8981\u7528\u5230\u7684\u62e6\u622a\u5668\u4e2d\uff0c\u52a0\u4e0a\uff08\u4f46\u6211\u6ca1\u52a0\uff0c\u4e0d\u52a0\u4e5f\u884c\uff09<\/p>\n<pre><code>        if (&amp;quot;websocket&amp;quot;.equals(exchange.getRequest().getHeaders().getUpgrade())) {\n            return chain.filter(exchange);\n        }<\/code><\/pre>\n<p>\u7edd\u5927\u591a\u6570\u60c5\u51b5\u90fd\u662f\u9274\u6743\u62e6\u622a\u5668\u4e2d\u628a\u8fd9\u73a9\u610f\u62e6\u622a\u4e86\uff0c\u6bd4\u5982\u6211\u7684\uff0c<\/p>\n<p>\u6240\u6709\u6211\u7528@PermitAll\u8fc7\u6ee4\u4e86\uff0c<\/p>\n<h3>3. \u4f9d\u8d56\u5305\u95ee\u9898<\/h3>\n<p>\u4e0b\u9762\u8fd9\u4e2a\u6709\u7684\u8bdd\u4e00\u5b9a\u4e0d\u884c<\/p>\n<pre><code>\n&amp;lt;!--        &amp;lt;dependency&amp;gt;--&amp;gt;\n&amp;lt;!--            &amp;lt;groupId&amp;gt;javax.servlet&amp;lt;\/groupId&amp;gt;--&amp;gt;\n&amp;lt;!--            &amp;lt;artifactId&amp;gt;javax.servlet-api&amp;lt;\/artifactId&amp;gt;--&amp;gt;\n&amp;lt;!--        &amp;lt;\/dependency&amp;gt;--&amp;gt;<\/code><\/pre>\n<h3>4. WebSocket\u8fde\u4e0a\u540e\u79d2\u65ad<\/h3>\n<p>\u6211\u8fd9\u662floadbalance\u5bfc\u81f4\u5747\u8861\u5230\u522b\u7684\u673a\u5668\u4e0a\u4e86\uff0c\u522b\u7684\u673a\u5668\u6ca1\u6709websocket\u4ee3\u7801\uff0c\u52a0\u4e86tag\u4ee5\u540e\u6b63\u5e38<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. \u8f6c\u53d1\u5904\u7406 Gateway \u914d\u7f6e\u4e2d routes: \u200b &#8211; id: business-backend-or [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77],"tags":[88],"class_list":["post-284","post","type-post","status-publish","format-standard","hentry","category-77","tag-websocket"],"_links":{"self":[{"href":"https:\/\/blessingcr.com\/index.php?rest_route=\/wp\/v2\/posts\/284","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blessingcr.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blessingcr.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blessingcr.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blessingcr.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=284"}],"version-history":[{"count":1,"href":"https:\/\/blessingcr.com\/index.php?rest_route=\/wp\/v2\/posts\/284\/revisions"}],"predecessor-version":[{"id":285,"href":"https:\/\/blessingcr.com\/index.php?rest_route=\/wp\/v2\/posts\/284\/revisions\/285"}],"wp:attachment":[{"href":"https:\/\/blessingcr.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blessingcr.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blessingcr.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}