2013-02-25 91 views
0

我正在嘗試使用Ti.Network.TCPSocket來登錄到IMAP服務器。Ti.Network.TCPSocket不返回任何內容

它很難,因爲我沒有收到任何回調試。例如:

var socket = Ti.Network.createTCPSocket("imap.gmail.com", 993); 
socket.connect(); 
socket.write("LOGIN user pass\r\n"); 

//event handlers 
socket.onWrite(function(data) { 
     Ti.API.debug('Written to socket: '+data); 
}); 

socket.onError(function(data) { 
     Ti.API.debug(data); 
}); 

我沒有收到任何迴應。甚至沒有錯誤或某種代碼或確認事情正在發生。

我在這裏做錯了什麼?

我怎樣才能讓這些即使處理程序工作或套接字返回某種消息。

任何幫助,將不勝感激。

更新 - 全碼

Ti.API.debug('Start A socket Connection'); 
var socket = Ti.Network.createTCPSocket("imap.gmail.com", 993); 

Ti.API.debug('Connect the socket'); 
socket.connect(); 

Ti.API.debug('Socket Connected'); 
var command = uniqueid()+" LOGIN USER PASS\r\n"; 
socket.write(command); 

//this is where the debug stops. No echo. 
Ti.API.debug('Command Run'); 

socket.onWrite(function(data) { 
    Ti.API.debug('Written to socket: '+data); 
}); 

socket.onError(function(data) { 
    Ti.API.debug('Error: '+data); 
}); 

socket.onReadComplete(function(data) { 
    Ti.API.debug('Here: '+data); 
}); 

function uniqueid() { 
    var s = []; 
    var hexDigits = "abcdef"; 
    for (var i = 0; i < 10; i++) { 
     s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); 
    } 
    s[14] = "4"; 
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); 
    s[8] = s[13] = s[18] = s[23]; 

    var uuid = s.join(""); 
    return uuid; 
} 

回答

0

端口993是IMAP通過SSL。

+0

是的,它是...... – 2013-02-25 06:00:22

+0

我能用PHP做到這一點,爲什麼不是TCP網絡功能?爲什麼我看不到任何回報? – 2013-02-25 06:09:34

+0

由於服務器正在等待您協商SSL連接,您看不到任何返回的內容。你沒有代碼來做到這一點。 (即使你做了,你仍然不會得到你的命令的迴應,因爲它不符合[IMAP協議](http://james.apache.org/server/rfclist/imap4/rfc2060.txt) ,第2.2節,它說*客戶端和服務器傳輸的所有交互都是以行的形式出現的,即以CRLF *結尾的字符串。) – 2013-02-25 06:12:40

0
  • onWrite不存在 - 這是一個錯誤,也可能是爲什麼你的調試語句停止。
  • 嘗試將您的socket.connect()移動到您定義處理程序之後。
  • 在嘗試寫入套接字之前,請使用interval和socket.isClosed()。一旦你得到一個socket.isClosed()== false,然後繼續。一旦你有套接字,你也可以在應用程序的webinspector控制檯中使用它。

這不會解決您的所有問題,但可能有所幫助。您可能想嘗試使用wireshark這樣的實用程序來查看socket.write時發送的數據,並將其與您的電子郵件客戶端發送的內容進行比較。

相關問題