我有一個web服務需要使用jabber-net對象向客戶端發送XMPP消息。 (用於處理打印:當Web服務需要打印某些內容時,我將XMPP消息發送到在插入打印機的特定機器上運行的Windows窗體客戶端,並使用打印作業類型和URL,以及然後客戶端下載數據並將其發送到打印機,該通信通道也將用於其他POS功能,如打開至抽屜,與芯片和引腳設備通話等,因此打印替代品將不會有幫助。ASP.NET Webgarden共享靜態對象
我有一個靜態對象,其中包含jabber-net對象的實例,它登錄到XMPP服務器,然後可用於發送消息。
這工作得很好單線程。當我將Web服務轉換爲Web服務器以便它可以在多個線程上工作時,似乎每個線程都有它自己的jabber-net對象實例,所以它們都試圖在XMPP服務器上登錄曾經是同一個用戶,這意味着他們不斷被踢出去。
問題:有沒有什麼辦法可以在Web花園的所有線程之間共享一個活動對象(可能處理事件,而不是序列化對象,而不僅僅是數據),如果是的話,最好的方法是什麼?
問題是,基於XMPP的方法*是我發送消息的方式。 MSMQ不會有太大的幫助,因爲「無法從沒有直接連接的計算機上的隊列中讀取消息。」 我想我可以用每個線程分別用一個唯一的名字簽名到XMPP服務器,儘管找出哪些名字可以自由登錄會很有趣......也許如果我深入瞭解jabber-net,我會工作了解如何使用相同的名稱和不同的資源對其進行簽名。 –
好吧,這將作爲答案,因爲添加行 _JabberClient.Resource =「myserver」+ Thread.CurrentThread.ManagedThreadId.ToString(); 已排序的所有內容:所有線程可以一次快樂地登錄,他們都能夠發送消息,並且任何消息/在線狀態通知都會被所有人收到。 –