私はこのチュートリアルに大きく基づいたサーバーを持っています。さらに変更を加えたところ、問題なく動作しました。しかし、今、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 サイトの他の関連記事を参照してください。