ホームページ  >  記事  >  バックエンド開発  >  Go でサーバー側 WebSocket をノンブロッキングにリッスンする方法

Go でサーバー側 WebSocket をノンブロッキングにリッスンする方法

PHPz
PHPz転載
2024-02-08 20:45:09403ブラウズ

如何在 Go 中非阻塞地监听服务器端 websocket

質問内容

https://pkg.go.dev/golang.org/x/net/websocketを使用してサーバーサイドを作成しますウェブソケット。それを介したすべての通信は json 形式で行われます。したがって、私のコードには次のものが含まれます:

リーリー

ただし、これはクライアントが接続を閉じるまでブロックされます。この WebSocket パッケージがコンテキストよりも古いものであることはわかっています (そして、より新しい WebSocket パッケージがあることも知っています)。それでも、ノンブロッキングな方法で受信フレームを待つ方法は本当にないのでしょうか?


正解


これは、クライアントが接続を閉じるまでブロックされます。

同時ブロック操作を処理する最も簡単な方法は、それらに goroutine を与えることです。ゴルーチンは、プロセスやスレッドとは異なり、本質的に「無料」です。

リーリー

以上がGo でサーバー側 WebSocket をノンブロッキングにリッスンする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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