如何將本地websocket發布至公網并實現遠程訪問?

本地websocket服務端暴露至公網訪問【cpolar內網穿透】

文章目錄

    • 本地websocket服務端暴露至公網訪問【cpolar內網穿透】
        • 1. Java 服務端demo環境
        • 2. 在pom文件引入第三包封裝的netty框架maven坐標
        • 3. 創建服務端,以接口模式調用,方便外部調用
        • 4. 啟動服務,出現以下信息表示啟動成功,暴露端口默認9999
        • 5. 創建隧道映射內網端口
        • 6. 查看狀態->在線隧道,復制所創建隧道的公網地址加端口號
        • 7. 以基于go的socket客戶端為例,通過公網連接java socket服務端
        • 8. 通過git下載websocket框架
        • 9. 創建客戶端, 注意:Host值為上面復制的隧道公網地址!!
        • 10. 接著啟動服務,與服務端連接,出現服務端返回的字樣表示連接成功
        • 11. 客戶端在控制臺輸入信息,回車
        • 12. 服務端出現客戶端發送的信息
        • 13. 服務端控制臺輸入消息,回車
        • 14. 客戶端收到服務端回復的消息,連接成功

1. Java 服務端demo環境
  • jdk1.8
  • 框架:springboot+maven
  • 工具IDEA
2. 在pom文件引入第三包封裝的netty框架maven坐標
<dependency><groupId>io.github.fzdwx</groupId><artifactId>sky-http-springboot-starter</artifactId><version>0.10.6</version>
</dependency>

注意:pom文件里需注釋掉springbootweb啟動器,web啟動器默認是tomcat服務啟動,會和netty服務沖突

20221220152746

3. 創建服務端,以接口模式調用,方便外部調用
@GetMapping("/getConnect")
public void getConnect(HttpServerRequest request){request.upgradeToWebSocket(ws -> {ws.mountOpen(h->{ws.send("連接成功,開始聊天吧!");});ws.mountText(s -> {System.out.println(s);//對方回復System.out.println("客戶端回復: "+s);//獲取控制臺輸入的值Scanner scanner =new Scanner(System.in);String next = scanner.next();ws.send(next);});});}
4. 啟動服務,出現以下信息表示啟動成功,暴露端口默認9999

20221220152808

5. 創建隧道映射內網端口

這里我們用cpolar內網穿透來映射內網端口,它支持http/https/tcp協議,不限制流量,無需公網ip,也不用設置路由器,操作簡單。

  • cpolar一鍵安裝腳本:(國內用戶)
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 或短鏈接安裝方式:(國外用戶)
curl -sL https://git.io/cpolar | sudo bash
  • 查看cpolar版本信息
cpolar version

如果正常顯示,則安裝成功

  • cpolar進行token認證

cpolar官網:https://www.cpolar.com/

進入cpolar官網,注冊一個賬號并登錄進入后臺,點擊左側的驗證,可以查看到token碼,復制并執行命令進行認證

cpolar authtoken xxxxxxxxxxxxxxxxxx
  • 配置cpolar開機自啟動
sudo systemctl enable cpolar
  • 守護進程方式,啟動cpolar
sudo systemctl start cpolar
  • 查看cpolar守護進程狀態,如正常為active,則為正常啟動狀態
sudo systemctl status cpolar

cpolar安裝成功后,默認會配置兩個默認隧道:一個ssh隧道和一個website隧道,可自行刪減或者修改。

接著把本地服務通過cpolar暴露到公網,瀏覽器訪問http://127.0.0.1:9200,登錄cpolar web ui 界面,創建一個tcp隧道,指向9999端口

20221220152822

注意:該隧道選擇的是臨時tcp地址和端口,24小時內會變化,如需固定tcp地址,可升級為專業套餐做tcp地址固定!

6. 查看狀態->在線隧道,復制所創建隧道的公網地址加端口號

20221220152843

此時,websocket服務端已經從本地localhost暴露至公網,接著我們創建一個客戶端測試公網訪問socket服務端連接

7. 以基于go的socket客戶端為例,通過公網連接java socket服務端
  • go版本:1.19
  • 工具:vscode
8. 通過git下載websocket框架
go get github.com/gorilla/websocket

20221220152904

9. 創建客戶端, 注意:Host值為上面復制的隧道公網地址!!
package mainimport ("fmt""log""net/url""github.com/gorilla/websocket"
)func main() {// 定義服務端的地址u := url.URL{Scheme: "ws",Host:   "3.tcp.vip.cpolar.cn:10793", //地址為復制隧道的公網地址Path:   "/eth/getConnect"} //服務端controller 映射地址// 與服務端建立連接c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)if err != nil {log.Fatal("dial:", err)}defer c.Close()// 阻塞主線程down := make(chan byte)// 啟動一個線程,讀取從服務端發送過來的數據go func() {for {_, message, _ := c.ReadMessage()fmt.Println("服務端回復:" + string(message))}}()//啟動一個線程輸入消息go func() {for {var input stringfmt.Scanln(&input)c.WriteMessage(websocket.TextMessage, []byte(input))}}()for {<-down}
}
10. 接著啟動服務,與服務端連接,出現服務端返回的字樣表示連接成功

20221220152924

11. 客戶端在控制臺輸入信息,回車

20221220152933

12. 服務端出現客戶端發送的信息

20221220152943

13. 服務端控制臺輸入消息,回車

20221220152951

14. 客戶端收到服務端回復的消息,連接成功

20221220153000

需要注意,免費使用cpolar所生成的公網地址為隨機臨時地址,24小時內會發生變化。如果需要長期遠程連接,建議為其配置固定的tcp端口地址。即登錄cpolar官網后,點擊預留,保留一個固定tcp端口地址,然后將其配置到相應的隧道中即可。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166277.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166277.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166277.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VR云游:讓旅游產業插上數字化翅膀,打造地方名片

自多地入冬降溫以來&#xff0c;泡溫泉成了許多人周末度假的選擇&#xff0c;在氣溫持續走低的趨勢下&#xff0c;溫泉游也迎來了旺季&#xff1b;但是依舊有些地區溫度依舊溫暖&#xff0c;例如南京的梧桐美景也吸引了不少游客前去打卡&#xff0c;大家穿著漢服與金黃的樹葉合…

【AI考證筆記】NO.1人工智能的基礎概念

以下部分內容來自于百度智能云人才認證培訓講義&#xff0c;騰訊等也有人工智能類似的講義&#xff0c;限時免費&#xff0c;也就是不報考&#xff0c;也能系統學習&#xff0c;課程做的都是不錯的。有感興趣的朋友&#xff0c;可以去檢索學習。 本系列是學習筆記&#xff0c;…

6個常用的聚類評價指標

評估聚類結果的有效性&#xff0c;即聚類評估或驗證&#xff0c;對于聚類應用程序的成功至關重要。它可以確保聚類算法在數據中識別出有意義的聚類&#xff0c;還可以用來確定哪種聚類算法最適合特定的數據集和任務&#xff0c;并調優這些算法的超參數(例如k-means中的聚類數量…

C語言——從鍵盤輸人三角形的三個邊長 a、b、c,求出三角形的面積。

從鍵盤輸人三角形的三個邊長 a、b、c,求出三角形的面積。求三角形的面積用公式areasqrt(s*(s-a)*(s-b)*(s-c)),其中 s1/2(a十bc)。注:要求對輸人三角形的三個邊長做出有效性判斷。 #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> #include<math.h> int main…

從word復制內容到wangEditor富文本框的時候會把html標簽也復制過來,如果只想實現直接復制純文本,有什么好的實現方式

從word復制內容到wangEditor富文本框的時候會把html標簽也復制過來&#xff0c;如果只想實現直接復制純文本&#xff0c;有什么好的實現方式&#xff1f; 將 Word 中的內容復制到富文本編輯器時&#xff0c;常常會帶有大量的 HTML 標簽和樣式&#xff0c;這可能導致不必要的格式…

前置微小信號放大器在生物醫學中有哪些應用

前置微小信號放大器在生物醫學領域中具有廣泛的應用。生物醫學信號通常具有較小的振幅和較低的幅頻響應&#xff0c;因此需要借助放大器來增強信號以便進行準確的測量、監測和分析。以下是前置微小信號放大器在生物醫學中的主要應用。 心電圖&#xff08;ECG&#xff09;放大器…

Spring第一課,了解IDEA里面的文件,回顧Cookie和Session,獲取Session,Cookie,Header的方式

目錄 IDEA第一課&#xff08;熟悉里面內容&#xff09; 建立連接 -RequestMapping 路由映射 請求 1.傳遞單個參數?編輯 2.多個參數?編輯 3.傳遞數組 4.傳遞一個集合&#xff0c;但是這里我們傳遞的時候發生了500的錯誤 簡單介紹JSON 回顧Cookie和S…

js檢測dom變化的方法:MutationObserver

前言 檢測一個原生dom的變化,如一個div的顏色,大小,所在位置,內部元素的屬性是否變化,更深層dom樹上的變化等等。 都可以使用一個window上暴露出來的一個api:MutationObserver 語法 官方地址:MutationObserver.MutationObserver() - Web API 接口參考 | MDN 使用new Mutat…

【大數據】Docker部署HMS(Hive Metastore Service)并使用Trino訪問Minio

本文參考鏈接置頂&#xff1a; Presto使用Docker獨立運行Hive Standalone Metastore管理MinIO&#xff08;S3&#xff09;_hive minio_BigDataToAI的博客-CSDN博客 一. 背景 團隊要升級大數據架構&#xff0c;需要摒棄hadoop&#xff0c;底層使用Minio做存儲&#xff0c;應用…

干貨 | 攜程酒店基于血緣元數據的數據流程優化實踐

作者簡介 九號&#xff0c;攜程數據技術專家&#xff0c;關注數據倉庫架構、數據湖、流式計算、數據治理。 一、背景 元數據MetaData狹義的解釋是用來描述數據的數據&#xff0c;廣義的來看&#xff0c;除了業務邏輯直接讀寫處理的那些業務數據&#xff0c;所有其它用來維持整個…

kafka詳細講解與安裝

Kafka是一種分布式流處理平臺&#xff0c;具有高吞吐量、可擴展性和容錯性。它最初由LinkedIn開發&#xff0c;現已成為Apache軟件基金會的頂級項目。Kafka廣泛應用于實時數據流處理、日志收集、消息隊列等場景。 以下是關于Kafka的簡要講解和安裝步驟&#xff1a; 一、Kafka…

ubuntu22.04 arrch64版操作系統編譯zlmediakit

腳本 系統沒有cmake&#xff0c;需要通過apt先進行下載&#xff0c;下面的腳本已經包含了 # 安裝依賴 gcc-c.x86_64 這個不加的話會有問題 sudo yum -y install gcc gcc-c libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg git openssl-devel gcc-c.x86_64 ca…

csrf漏洞修復

漏洞說明&#xff1a;通過篡改請求頭中的Referer值依舊能夠訪問到接口。 通過http請求頭里面的Referer隨意訪問接口 通過下面兩個代碼類程序來實現你的程序不會被攻擊&#xff0c;里面有兩個實體&#xff0c;如果你感覺這個程序對你有用&#xff0c;聯系我&#xff0c;我私發…

CentOS 7 安裝 Weblogic 14 版本

安裝JDK程序 注意&#xff1a;安裝weblogic前&#xff0c;先安裝JDK&#xff01;&#xff08;要求jdk(1.7以上)&#xff09;&#xff1a; 一、創建用戶組weblogic及用戶weblogic groupadd weblogic useradd -g weblogic weblogic二、將下載好的jdk及weblogic上傳至/home/webl…

2分鐘快速實現非邏輯卷磁盤擴容

在虛擬機環境中&#xff0c;您可以擴展虛擬硬盤的大小而不影響數據。以下是擴展 /dev/sdb 磁盤從200G到500G并擴展 /dev/sdb1 分區到新大小的步驟&#xff1a; 關閉相關服務&#xff1a;確保沒有服務正在訪問 /app 分區。 關閉虛擬機&#xff1a;關閉您要更改磁盤大小的虛擬機…

「首屆廣州百家新銳企業」名單出爐!數說故事遴選入圍

11月20日&#xff0c;由中共廣州市委統戰部、市工商聯、市工信局、市國資委、市科技局聯合主辦的首屆廣州百家新銳企業融通創新交流會在廣州成功舉辦。 為推動廣州市中小民營企業的創新發展&#xff0c;踐行新發展理念&#xff0c;厚植廣州產業根基&#xff0c;現場發布首屆廣…

qt實現播放視屏的時候,加載外掛字幕(.srt文件解析)

之前用qt寫了一個在windows下播放視頻的軟件&#xff0c;具體介紹參見qt編寫的視頻播放器&#xff0c;windows下使用&#xff0c;精致小巧_GreenHandBruce的博客-CSDN博客 后來發現有些視頻沒有內嵌字幕&#xff0c;需要外掛字幕&#xff0c;這時候&#xff0c;我就想著把加載…

SELinux零知識學習二十六、SELinux策略語言之類型強制(11)

接前一篇文章:SELinux零知識學習二十五、SELinux策略語言之類型強制(10) 二、SELinux策略語言之類型強制 3. 訪問向量規則 AV規則就是按照對客體類別的訪問許可指定具體含義的規則,SELinux策略語言目前支持四類AV規則: allow:表示允許主體對客體執行允許的操作。nevera…

docker compose啟動多個服務,如何查看多個服務的日志

使用docker-compose的--scale啟動多個服務&#xff0c;如何查看多個服務的日志 docker-compose -f yml路徑 logs -f --tail 100第一個-f指定yml路徑&#xff0c;不然會報錯誤no configuration file provided: not found 第二個-f是ogs的參數&#xff0c;表示實時刷新&#xff…

YOLOv5結合華為諾亞VanillaNet Block模塊

???YOLOv5實戰寶典--星級指南:從入門到精通,您不可錯過的技巧 ??-- 聚焦于YOLO的 最新版本, 對頸部網絡改進、添加局部注意力、增加檢測頭部,實測漲點 ?? 深入淺出YOLOv5:我的專業筆記與技術總結 ??-- YOLOv5輕松上手, 適用技術小白,文章代碼齊全,僅需 …