【发布时间】:2014-05-27 03:20:58
【问题描述】:
我正在尝试设置一个特定的场景,但显然我遇到了问题。我的服务器是一个主要托管 WCF 服务的站点,但我也想在那里添加一个 XSockets 主机。根据 readme.txt 中的说明,我在引导代码文件中有标准代码。在客户端连接时,我正在启动一个工作线程,它基本上是客户端将监控的心跳。来自控制器的相关代码如下:
public class HeartbeatController : XSocketController
{
public void AddMessage(string message)
{
this.SendToAll(message, "addMessage");
}
}
在我的工作线程中,我称之为:
string message = String.Format("pump", Math.Round(cpuCounter.NextValue());
ClientPool connection = ClientPool.GetInstance("ws://mywebsite:4502/HeartbeatController", "*");
connection.Send(message, "addMessage");
目前我正在使用如下所示的控制台客户端进行测试:
class Program
{
static XSocketClient socketClient;
static void Main(string[] args)
{
Console.WriteLine("Starting client...");
string url = "ws://mywebsite:4502/HeartbeatController";
socketClient = new XSocketClient(url, "*");
socketClient.OnOpen += socketClient_OnOpen;
socketClient.Open();
while (true)
{
// let it sit and display the "pump" messages
string input = Console.ReadLine();
if (input.Equals("Q", StringComparison.Ordinal))
{
break;
}
}
}
static void socketClient_OnOpen(object sender, EventArgs e)
{
Console.WriteLine("socketClient Opened");
socketClient.Bind("addMessage", OnAddMessage);
}
private static void OnAddMessage(ITextArgs textArgs)
{
Console.WriteLine("AddMessage :: {0}", textArgs.data);
}
}
在客户端,如果我在 socketClient_OnOpen 方法中放置一个断点,它会被命中,所以我认为它正在连接。但是泵消息永远不会到达客户端。
两个问题:
- 我有什么明显的遗漏吗?
- (不相关)由于许多企业真的不喜欢在他们的防火墙上打孔,有没有办法在这个设置中使用端口 80(这样客户端连接看起来像“ws://mywebsite/HeartbeatController”) ?
感谢您的帮助!
【问题讨论】:
标签: c# xsockets.net