我試圖設置一個特定的場景,但顯然我遇到了問題。我的服務器是一個主要託管WCF服務的站點,但我也想在其中添加一個XSockets主機。根據readme.txt中的說明,我在引導代碼文件中有標準代碼。在客戶端連接時,我啓動了一個基本上是客戶端將監視的心跳線的工作線程。從控制器相關的代碼如下:XSockets客戶端連接但沒有收到消息
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」) ?
感謝您的幫助!
謝謝你,@ Uffe,這就像一個魅力!關於第二個問題的任何想法?我可以使用端口80進行XSockets通信嗎?如果不是現在,是否會添加一些東西? – Chuck
您可以在端口80上運行XSockets,但如果您已經擁有使用該端口的IIS或其他Web服務器/服務,則不能運行。我們即將發佈4.0,然後您將能夠在OWIN中託管XSockets,並因此使用端口80 – Uffe
感謝您的更新。 4.0會在街上出現時我會檢查一下。 – Chuck