Ti.Network.TCPSocket没有返回任何内容

时间:2013-02-25 05:45:48

标签: tidesdk

我正在尝试使用Ti.Network.TCPSocket登录IMAP服务器。

很难,因为我没有收到任何回调试。例如:

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 = "0123456789abcdef";
    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;
}

2 个答案:

答案 0 :(得分:0)

端口993用于基于SSL的IMAP。

答案 1 :(得分:0)

  • onWrite不存在 - 这就是一个错误,也可能是你的调试语句停止的原因。
  • 尝试在定义处理程序后移动socket.connect()。
  • 在尝试写入套接字之前,请使用interval和socket.isClosed()。一旦你得到一个socket.isClosed()== false,那就继续吧。一旦你有了套接字,你也可以在app的webinspector控制台中使用它。

这不会解决您的所有问题,但可能有所帮助。您可能想尝试使用wireshark这样的实用程序,以便在socket.write时查看您正在发送的内容,并将其与您的电子邮件客户端发送的内容进行比较。