我最近開發並完成了一個軟件,其中的作品像瞄準。 但問題在於,服務器對當地朋友來說工作得很好,因爲他們距離服務器只有25英里,所以沒有任何滯後。 但是,當上傳到Web主機時,它每次ping服務器時都會滯後。 服務器使用PHP,因此無需再購買400美元/月的專用計算機。 下面是其中客戶端不斷在調用該函數:VB.NET HTTP LAG!試圖讓我自己的IM客戶端
Public Function GetPage(ByVal url As String)
Dim WReq As HttpWebRequest
Dim WResp As WebResponse
Dim sr As IO.StreamReader
Try
WReq = WebRequest.Create(url)
WReq.CookieContainer = cookies
WReq.Timeout = "120000"
WResp = WReq.GetResponse()
sr = New IO.StreamReader(WResp.GetResponseStream())
GetPage = sr.ReadToEnd()
WResp.Close()
Return (GetPage)
Catch err As SystemException
MsgBox("err message: " & err.ToString & vbCrLf)
Catch ex As Exception
MsgBox("err message: " & ex.ToString & vbCrLf)
End Try
End Function
的演示網址會像 http://localhost/chat/newpm.php?to=User&msg=Hello 那麼,如何OSCAR做到這一點(的平臺,爲AOL,又名AIM) 和如何做味精? gtalk或其他大型即時通訊客戶做到這一點?
我正在考慮重新編碼getpage函數,以便它連接到TCP服務器並不斷等待新消息,我仍然不確定這是否會導致延遲,如果主機位於美國,客戶端是不(例如)。 您能否爲我提供這個問題的補救措施?
你實際得到多少滯後?當你與遠在身邊的服務器通信時,你肯定會看到更多的延遲。這僅僅是光速的限制,是不可避免的(至少在這個宇宙中)。 – 2010-01-31 20:33:36
你的函數定義GetPage沒有指定返回值,所以我假設我們沒有看真正的代碼。延遲不應該是一個問題,除非你通過衛星穿過網絡。你可以在赤道上地球旅行,只需要200毫秒。或者。 – dbasnett 2010-01-31 22:18:39
您需要將'WebResponse'和'StreamReader'放入'Using'塊中。另外,不需要單獨捕獲'Exception'和'SystemException'。事實上,不要捕捉 - 功能不應該有一個用戶界面。讓UI決定如何處理異常。 – 2010-01-31 23:05:04