2011-02-14 76 views
1

如何在.net應用程序中集成NoVNC以進行遠程訪問?.net應用程序中的NoVNC集成

+0

我的回答有幫助嗎?如果不是,你能澄清你的問題:你更具體地尋找什麼? – kanaka 2011-02-22 15:12:47

回答

3

這取決於您是要將noVNC客戶端集成到.net應用程序還是希望noVNC能夠連接到.net應用程序以查看它。我不知道爲什麼你會想要做前者,因爲有更有效的方式將VNC客戶端添加到.net應用程序。所以我會回答第二個選項(使用noVNC連接到.net應用程序)。

noVNC是VNC客戶端;它實現了RFB/VNC protocol的客戶端部分。 noVNC連接的服務器必須實現RFB/VNC協議的服務器部分。最簡單的選擇是運行一個單獨的VNC服務器,該服務器可以爲單個窗口服務(應用程序可以在其控制下啓動VNC服務器)。否則,你必須實現所有的應用程序本身的VNC/RFB語義:

  • VNC認證
  • 編碼談判
  • 跟蹤應用程序的可視狀態隨着時間的推移
  • 做客戶端的東西鼠標狀態和鍵盤狀態信息
  • 通過計算自上次客戶端請求該區域以來發生更改的請求區域內的矩形來回答客戶端FBU(幀緩衝區更新)請求。將這些矩形編組爲由客戶端和服務器支持的最佳編碼。

另外一個Web瀏覽器無法啓動原始TCP套接字連接,只有WebSocket連接。除了WebSockets握手和組幀之外,WebSockets目前只允許使用UTF-8編碼的有效載荷。爲了解決這些限制,noVNC使用websockify在原始TCP套接字和WebSocket之間進行轉換。爲了解決WebSocket UTF-8的限制,websockify base64對瀏覽器的所有流量進行編碼/解碼。 websockify的功能可以與VNC服務器功能一起實施。實際上,this fork of libvncserver具有WebSockets(和base64編碼)支持內置(即noVNC可以直接連接到它沒有websockify)。

如果您仍想嘗試在.net應用程序中實現VNC/RFB和WebSockets支持,那麼您可以使用this C# code作爲WebSockets功能的參考。

相關問題