Java サーバーのデモ環境
pom ファイルの 3 番目のパッケージによってカプセル化された netty フレームワークの Maven 座標を導入します。
<dependency>
<groupId>io.github.fzdwx</groupId>
<artifactId>sky-http-springboot-starter</artifactId>
<version>0.10.6</version>
</dependency>
*注: springbootweb スターターは、pom ファイルでコメント アウトする必要があります. Web スターターはデフォルトで tomcat サービスを開始するため、netty サービスと競合します。
Javaサーバーを作成し、外部呼び出しに便利なインターフェースモードで作成します
@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);
});
});
}
サービスを開始すると、開始が成功したことを示す次の情報が表示され、公開されたポートのデフォルト: 9999
次に、cpolar を介してローカル サービスをパブリック ネットワークに公開します。cpolar のインストールと使用の詳細については、次の記事を参照してください。
リモート企業イントラネット サーバー [イントラネット浸透]
アクセスするブラウザを開きます: http://127.0.0.1:9200 cpolar web ui インターフェイス、tcp ポート 9999 でトンネルを作成します。
注: トンネルは一時的な TCP アドレスとポートを選択します, これは 24 時間以内に変更されます. TCP アドレスを修正する必要がある場合は、プロフェッショナル パッケージにアップグレードして TCP アドレスを修正できます!
ステータスを表示 -> オンライン トンネル、作成したトンネルのパブリック ネットワーク アドレスとポートをコピー
この時点で、websocket サーバーはローカル localhost からパブリック ネットワークに公開されています。次に、パブリック ネットワークをテストしてソケット サーバー接続にアクセスするためのクライアントを作成します。
go ベースのソケット クライアントを例にとると、パブリック ネットワークを介して Java ソケット サーバーに接続します。
git 経由で websocket フレームワークをダウンロードします。
go get github.com/gorilla/websocket
GO クライアントを作成します。注: Host 値は、上でコピーしたトンネルのパブリック ネットワーク アドレスです!!
package main
import (
"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 string
fmt.Scanln(&input)
c.WriteMessage(websocket.TextMessage, []byte(input))
}
}()
for {
<-down
}
}
次に、サービスを開始し、サーバーに接続します。サーバーから返された単語は、接続が成功したことを示します
クライアントはコンソールに情報を入力し、Enter をクリックします。
サーバーは、クライアントから送信された情報を受信して出力します
次に、サーバー コンソールにメッセージを入力し、Enter キーを押します。
クライアントはサーバーから応答メッセージを受信し、接続は成功します
上記で設定したアドレスはランダムに変更されるため、24 時間以内に tcp パブリック ネットワーク アドレスを修正し (プロフェッショナル パッケージをアップグレードする必要があります)、公式 Web サイト www.cpolar.com を開き、[予約] をクリックして、tcp アドレスを予約します。 .
予約済みアドレスをコピーし、Web UI インターフェイスを開き、予約済みアドレス情報を更新および追加します