none
如何實作出如MSN的聊天功能? RRS feed

  • 問題

  • Dear all:

    請問各位前輩要如何實作出如MSN的一對一聊天功能?

    目前的想法是透過Web Server來作PDA上的溝通,不知道可不可行?

    因為找到這類的資料很少,請各位高手幫忙..提示給我一些概念


    感謝
    2007年8月9日 下午 03:17

解答

  • MSN 的一對一聊天是透過 TCP 點對點直接連線,若是你是走無線網路,沒有通訊費問題時,你可以先看看 MSDN 上有 PC 版的 VB 程式碼範例,含 Server / Client 端,不過這種情形不走 Web Server ,MSN 也是不走 Web Server 。

     

    走無線網路配 Web Server 的話,一般會考慮 AJAX (但不知道手機支援的情形) 。一對一或一對多的作法可以這樣做:

    1. 每條訊息帶上時間戳記,寫入資料庫。

    2. client 第一次登入時,看你打算預設全部載入還是只收最新訊息,決定你的時間戳記,之後定時 AJAX 要求該時間點之後的訊息,排除重複訊息後,依序顯示在螢幕上。

    3. 可以考慮 5 秒要求一次,但是開始時間必須上次要求的結束時間相同,因為時間戳記在資料庫最小單位是秒(微秒牽扯到資料型態跟資料庫特性,不討論),可能會有時間誤差的問題,所以最小單位必須重複要求,在 client 端在判斷是否有重複。

    當然,你可以改用編號,不用時間戳記,要求編號為整數、唯一、遞增,就可以改要求上次最後編號之後的所有短訊。

     

    2007年8月11日 下午 01:13
  • 不是有寫嗎?

    用 Form 來做聊天室的話,MSDN 上就有範例,用 Chat sample 搜尋就有了,比如說標題為:

    Creating a Multi-User TCP Chat Application

    ms-help://MS.MSDNQTR.v80.cht/MS.MSDN.v80/MS.VSADD.v10.en/dnadvnet/html/vbnet08282001.htm

     

    另一篇行動裝置上的聊天室,不知道是台灣人還內地人(李維明):

    Infrared Programming Using the .NET Compact Framework

    ms-help://MS.MSDNQTR.v80.cht/MS.MSDN.v80/MS.VSADD.v10.en/dnhcvs04/html/vs04b6.htm

     

    原版光碟範例:

    WinTalk: a simple "Sockets Chat" Windows application using Windows Forms

    Samples\applications\wintalk\vb\WinTalkVB.vbproj 

     

    走 WiFi

    Developing Smart Device WiFi Applications with the .NET Compact Framework

    http://msdn2.microsoft.com/en-us/library/aa446527.aspx

     

    Chat Sample

    http://msdn2.microsoft.com/en-us/library/aa308962(vs.71).aspx

    Link to the online sample documentation

    Link to the online sample source code

     

    還有最新的 .Net 3.0 範例:

     

    非 .Net 的語音聊天室:

    Integrating Rich Client Communications with the Microsoft Real-Time Communications API

    http://msdn2.microsoft.com/en-us/library/ms997611.aspx

     

    先前提到資料庫是針對你開板的 Web Server 提的,當然可以不用,只是用資料庫管理訊息會比較單純。

     

    註:不要懶到讓網友幫你找資料,都已經說是 MSDN 了...

    2007年8月12日 下午 04:30

所有回覆