WinForm デスクトップ アプリケーションを開発しています。私は CometD サーバーとのハンドシェークに成功し、変更要求をサーバーに送信しています。リクエストが正常に受信され、リクエスト コマンドがサーバーによって実行され、最後に CometD サーバーによる State Changed メッセージがあることを期待しています。ただし、onMessage() メソッドで受信したメッセージはありません。誰かが理由を知っていますか?助言がありますか?
public void getCometDAuthenticationRequest(HttpWebRequest request)
{
request = (HttpWebRequest)WebRequest.Create(ConfigurationManager.AppSettings["MyServer"]);
request.ContentType = "application/json; charset=utf-8";
request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1").GetBytes(userName + ":" + password));
request.PreAuthenticate = true;
request.Method = "POST";
}
private void connectToCometD()
{
try
{
IClientSessionChannel channel;
BayeuxClient client;
Action<HttpWebRequest> customizeRequest = new Action<HttpWebRequest>(getCometDAuthenticationRequest);
LongPollingTransport transport = new LongPollingTransport(null, customizeRequest);
// Handshake
string url = ConfigurationManager.AppSettings["CometDServer"];
client = new BayeuxClient(url, new List<ClientTransport>() { transport });
client.handshake();
client.waitFor(1000, new List<BayeuxClient.State>() { BayeuxClient.State.CONNECTED });
// Subscription to channels
channel = client.getChannel("/fooChannel");
channel.subscribe(new Listener());
}
catch (Exception e)
{
MessageBox.Show("EXCEPTION ON connectToCometD(): " + e.Message);
return;
}
}
class Listener : IMessageListener
{
public void onMessage(IClientSessionChannel channel, IMessage message)
{
MessageBox.Show("New Message received.. Message:" + message.ToString());
}
}