ホームページ  >  記事  >  バックエンド開発  >  ソケット サーバーを起動すると gRPC/http クライアント サーバー通信が妨げられる Golang

ソケット サーバーを起動すると gRPC/http クライアント サーバー通信が妨げられる Golang

PHPz
PHPz転載
2024-02-05 23:30:071220ブラウズ

启动套接字服务器会干扰 gRPC/http 客户端服务器通信 Golang

質問の内容

私はこのチュートリアルに大きく基づいたサーバーを持っています。さらに変更を加えたところ、問題なく動作しました。しかし、今、socket.io を追加しようとしましたが、いくつかの問題が発生しています。私が追加した socket.io コードをテストしたところ、クライアント側のコード (エンドポイント) がサーバー側のコード (データベース クエリ、処理) を呼び出すメカニズムに影響を与えているようです。端末にエンドポイント呼び出しのログが表示されると、呼び出しはサーバーのクライアント側に到達していますが、サーバー側を呼び出しているようには見えません。

これはソケット サーバーのコードです:

リーリー

// main.go サーバー側

リーリー

// main.go クライアント

リーリー

クライアントとサーバーの完全なコードについては、上にリンクしたチュートリアルをご覧ください。 startsocket() を呼び出さなければ、すべてが正常に動作します。

API のエンドポイントを呼び出すと、次のエラーが発生します。このエラーは、サーバー側のコードを呼び出すコードによって発生します:

リーリー

コードは以下のように表示されます:

リーリー

error2 は API 呼び出しによって返された内容です


正解


このコード行は関数 StartSocket() をブロックしています。決して戻りません:

fmt.Print(http.ListenAndServe(":8000", nil))

テストのために、ログの後にログを追加できます。ログ メッセージは出力されません。

別の非ブロッキング goroutine で StartSocket() を実行する必要があります。

注意事項 たとえば、この行は log.Fatal(http.ListenAndServe(":8000", nil)) です。コードがエラーを飲み込みました。

以上がソケット サーバーを起動すると gRPC/http クライアント サーバー通信が妨げられる Golangの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。