2017-03-09 19 views
2

Qt websocketクラスを使用してwebsocketクライアントを設定しようとしました。 残念ながら、私は最初のステップを進めることができませんでした。クライアントをサーバーに接続することです。QWebSocket "不明なエラー"

Go ws websocket clientとC++ easywsclient libraryの両方がサーバーに接続してインターフェイスできるため、接続が可能であることは間違いありません。

私のコードの関連部分は以下の通りです:

QAbstractSocket::UnknownSocketError "Unknown error" 

エラーを明確にするどのような方法があります:

QWebSocket socket; 
    socket.open(QUrl("ws://localhost:9999")); 
    qDebug() << socket.error() << socket.errorString(); 

は、プログラムを実行しているとき、私は次の(役に立たない)メッセージが表示されますおよび/または問題を修正しますか?

P.S. easywsclientライブラリはサーバに接続してインタフェースを取ることができますが、それは限界的な仕事しかしません。そのためQtクラスを使いたいのです。

答えて

1

エラーはありません。 open()は非同期です。 connected()disconnected()error()textMessageReceived()のシグナルをQObject由来オブジェクトのスロットに接続します。または、非常に基本的なアプリケーションの場合はいくつかのラムダを使用してください:

QWebSocket socket; 
QObject::connect(&socket, &QWebSocket::connected, [] { qDebug() << "connected"; }); 
QObject::connect(&socket, &QWebSocket::error, [](QAbstractSocket::SocketError error) { qDebug() << error; }); 
socket.open(QUrl("ws://localhost:9999")); 
+0

ありがとう、私はopen()が非同期であることを認識しませんでした。実際のスロットと同様にラムダスロットでコードを試しましたが、クライアントは引き続きサーバーに接続できません。 Wiresharkでデバッグすると、クライアントは最初のハンドシェイク後すぐにFIN、ACKを送信し、接続を終了します。何がここで何が起こっているのだろうか? – nov1943

+0

更新:奇妙なことに、WebSocketが機能し始めました。それはポートの変更がトリックをしたようだ。これは私だけに影響を与えるローカルな問題でした。すべてのあなたの助けをありがとうございます:) – nov1943

関連する問題