簡體   English   中英

正確捕獲錯誤Socket.io

[英]Correctly capture an error Socket.io

我正在建立一個簡單的聊天室。 我正在使用websocket lib socket.io,因為它具有出色的服務器/客戶端實現。

我的客戶端在移動設備上,因此網絡連接非常不穩定。 我已經閱讀了一些有關確認功能的信息,這些確認功能可以與發射一起傳遞,以在套接字“事務”完成后執行代碼。 但是在此基礎上構建錯誤處理將非常困難。

我還閱讀了捕獲錯誤的.on('error'實現。

這里的問題是:如何區分發送失敗的消息(.emit)和套接字連接暫時丟失。 我不在乎丟失套接字連接,因為我將其設置為一旦丟失就重新連接。

希望我的情況能明白。 提前致謝。

編輯:

我正在尋找的是在客戶端這樣的事情:

socket.on('error', function(data){
   alert(data.emitData.msg+' could not be sent: '+data.emitID);
});

同時,我將開始自己仔細研究API

在socket.io文檔中涵蓋消息確認。 這是該文檔的相關部分:

有時,當客戶端確認消息接收后,您可能希望獲得回調。

為此,只需將函數作為.send或.emit的最后一個參數傳遞即可。 此外,當您使用.emit時,確認由您完成,這意味着您還可以傳遞數據:

服務器(app.js)

 var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.on('ferret', function (name, fn) { fn('woot'); }); }); 

客戶端(index.html)

 <script> var socket = io(); // TIP: io() with no args does auto-discovery socket.on('connect', function () { // TIP: you can avoid listening on `connect` and listen on events directly too! socket.emit('ferret', 'tobi', function (data) { console.log(data); // data will be 'woot' }); }); </script> 

並且,這里顯示了另一個示例: socket.io自定義事件的確認

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM