作者vn801368 (沒錢了...衰)
站內Visual_Basic
標題[.NET] 網路即時更新
時間Sun Jul 20 12:29:48 2008
大家好 小弟目前正在寫一個類似MSN的程式
目前正在寫上線通知這一塊
對於VB.NET的網路程式設計比較不熟所以來請問大家
我想做的是某個人上線可以即時的通知其他人
關於這部分有什麼比較好的做法嗎?
因為我翻書 大部份網路都只有介紹TCP跟UDP
可是TCP要一個一個建立連線 很費時
萬一要是其中一個一直連線失敗就會等很久
還有如果需要通知的人數很多的話
就會要建立很多連線 費時又麻煩
UDP雖然比較快 可是怕會掉包沒收到
所以想請問大家有沒有比較好的想法可供小弟參考一下
之前我寫過JAVA的Multicast 不過VB好像沒有這一塊
而且當初寫完試用時 有時後封包也會被NAT檔掉= ="
我目前用的是比較土法煉鋼的暴力法= =
先將上線or下線狀態記錄在資料庫
然後client端固定30秒去更新一次
可是這樣程式負擔很大
而且也沒辦法達到及時的效果....
我在想有沒有辦法從MS SQL資料庫直接通知VB的程式??
也就是某A上線→去資料庫更新狀態→"資料庫"通知某B 某A上線了
我想應該是有 不過小弟不知道關於這一塊的技術叫做是......?
謝謝大家
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.240.196.55
1F:推 fumizuki:通常不會server主動通知client 07/20 15:09
2F:推 fumizuki:一定是client去server取得訊息 07/20 15:09
3F:→ fumizuki:server主動通知的話負擔會非常的重 07/20 15:10
4F:→ fumizuki:我的想法是這樣 client每幾秒就會向server取得狀態一次 07/20 15:11
5F:→ fumizuki:這個時候server再傳相關的訊息給client 07/20 15:12
6F:→ fumizuki:我想bbs的水球應該是主動通知的 msn訊息是被動通知的 07/20 15:14
7F:→ vn801368:我現在的做法就是每30秒取得狀態一次啦 07/20 15:15
8F:→ vn801368:不過程式感覺LOAD很重 而且這樣就做不到即時效果@@ 07/20 15:17
9F:→ vn801368:如果某A30秒內上線完下線 這樣某B可能會什麼都不知道 07/20 15:18
10F:→ vn801368:當然用SERVER主動通知LOAD會更重我也知道啦 07/20 15:18
11F:→ vn801368:我只是想知道有沒有這樣的技術而已^^" 07/20 15:18
12F:推 fumizuki:程式是有多少內容 怎麼會load重 除非有很多人在測試這個 07/20 17:48
13F:→ fumizuki:程式 07/20 17:48
14F:→ fumizuki:30秒有點長了 不過不管多少時間 訊息是儲存在佇列中 07/20 17:49
15F:→ fumizuki:等著client去接收 07/20 17:49
16F:→ fumizuki:不管另一方是否在線上 都一樣收得到 07/20 17:49
17F:→ fumizuki:開一個資料表就專門放上下線及即時傳訊等各種訊息 07/20 17:50
18F:→ fumizuki:等接收者來接收 07/20 17:50