閒扯
為什麼用 websocket
用法用 socketrocket 框架,記住幾個**方法就好了,很簡單。
1.建立和設定**物件12
3456
srwebsocket *socket = [[srwebsocket alloc] initwithurlrequest:
[nsurlrequest requestwithurl:[nsurl urlwithstring:@
]];
socket.delegate = self;
// 實現這個 srwebsocketdelegate 協議啊
[socket open];
// open 就是直接連線了
2.連線成功會呼叫這個**方法12
3- (
void
)websocketdidopen:(srwebsocket *)websocket
3.連線失敗會呼叫這個方法,看 nslog 裡面的東西12
3456
7- (
void
)websocket:(srwebsocket *)websocket didfailwitherror:(nserror *)error
4.連線關閉呼叫這個方法,注意連線關閉不是連線斷開,關閉是 [socket close] 客戶端主動關閉,斷開可能是斷網了,被動斷開的。12
3- (
void
)websocket:(srwebsocket *)websocket didclosewithcode:(nsinteger)code reason:(nsstring *)reason wasclean:(
bool
)wasclean
5.收到伺服器發來的資料會呼叫這個方法12
3456
- (
void
)websocket:(srwebsocket *)websocket didreceivemessage:(id)message
6.向伺服器傳送資料
傳送的時候可能斷網,可能socket還在連線,要判斷一些情況,寫在下面了
傳送邏輯是,我有乙個 socketqueue 的序列佇列,傳送請求會加到這個佇列裡,然後乙個乙個發出去,如果掉線了,重連連上後繼續傳送,對呼叫層透明,呼叫層不需要知道網路斷開了。12
3456
78910
1112
1314
1516
1718
1920
2122
2324
2526
2728
- (
void
)senddata:(id)data
else
if
(ws.socket.readystate == sr_connecting)
else
if
(ws.socket.readystate == sr_closing || ws.socket.readystate == sr_closed) ];
}
}
else
});
}
7.心跳機制
心跳機制就不難了,開個定時器,問下後台要每隔多少秒傳送一次心跳請求就好了。然後注意,斷網了或者socket斷開的時候把心跳關一下,省資源,不然都斷網了,還在迴圈發心跳,浪費cpu和電量。
接入WebSocket記錄 一些個人經驗
閒扯 為什麼用 websocket 用法用 socketrocket 框架,記住幾個 方法就好了,很簡單。1.建立和設定 物件 1 2 3 4 5 6 srwebsocket socket srwebsocket alloc initwithurlrequest nsurlrequest reque...
Websocket的一些資訊
html5的websocket api 它可用於客戶端 伺服器端。websocket api是下一代客戶端 伺服器的非同步通訊方法。該通訊取代了單個的tcp套接字,使用ws或wss協議,可用於任意的客戶端和伺服器程式。websocket目前由w3c進行標準化。websocket已經受到firefox...
記錄一些WPF
1.exception 使用該資訊可以確定如何處理異常。handled 屬性設定為true2.3.invoke 是同步操作,而 begininvoke 是非同步操作 4.pack uri 方案使用 pack 作為它的方案,並且包含兩個元件 授權和路徑。以下是 pack uri 的格式。pack 授權...