小さな websocket サーバーに warmcat の libwebsocket C ライブラリを使用しています。私は例を稼働させており、websocket からのデータの受信に応答してデータを送信できます (送信された逆のバイトをエコーバックするなど)。ただし、libwebsocket コールバック関数にまだ入っていない状態で、サーバーからデータを非同期に送信する方法を理解できませんでした。libwebsocket_write() に渡す wsi ポインターが必要ですが、コールバック以外でポインターを取得する方法がわかりません。
私自身の経験が確認しているように、libwebsocket はスレッドセーフではないことを読みました。
libwebsockets.c:line2483 で、「プロトコル コールバック関数は [...] 非同期送信を許可するために定期的に呼び出される」と読みました。これはまさに私が望んでいることですが、自分のコードでこれが起こっていることを確認しておらず、「オンにする」方法が見つかりませんでした。
私が提供している websocket に非同期的に書き込む方法についての提案はありますか?
libwebsocket のコード: http://git.warmcat.com/cgi-bin/cgit/libwebsockets/
使用例: http://martinsikora.com/libwebsockets-simple-websocket-server