我正在开发WinForm桌面应用程序。我已与CometD服务器成功握手,然后将更改请求发送到服务器。我确定请求已成功接收,并且服务器已完成了请求命令,最后期望CometD服务器发出状态更改消息。但是,没有消息发送给我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());
}
}