Created
April 5, 2014 08:34
-
-
Save rborn/9989098 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var win = Titanium.UI.createWindow(); | |
win.open(); | |
var info = Ti.API.info; | |
///===================== | |
var socket = null; | |
var connectedSockets = []; | |
function connect() | |
{ | |
if(socket == null || socket.state == Ti.Network.Socket.CLOSED) | |
{ | |
socket = Titanium.Network.Socket.createTCP({ | |
host:(Ti.Platform.username == 'iPhone Simulator' ? '10.0.2.1' : Ti.Platform.address), | |
port:40404, | |
listenQueueSize:100, | |
accepted: accepted, | |
closed: function(e) | |
{ | |
info("Closed listener"); | |
}, | |
error: function(e) | |
{ | |
Ti.UI.createAlertDialog({ | |
title:"Listener error: " + e.errorCode, | |
message:e.error | |
}).show(); | |
} | |
}); | |
try | |
{ | |
socket.listen(); | |
info("###Listening on " + socket.host + ":" + socket.port); | |
socket.accept(acceptedCallbacks); | |
} catch (e) | |
{ | |
info('Exception: ' + e); | |
} | |
} | |
} | |
function accepted(e) | |
{ | |
var sock = e.inbound; | |
connectedSockets.push(sock); | |
info('ACCEPTED: ' + sock.host + ':' + sock.port); | |
Ti.Stream.pump(sock, pumpCallback, 1024, true); | |
socket.accept(acceptedCallbacks); | |
} | |
function pumpCallback(e) | |
{ | |
var sock = e.source; | |
if(e.bytesProcessed == -1) | |
{ // EOF | |
info("<EOF> - Closing the remote socket!"); | |
removeSocket(sock); | |
sock.close(); | |
} | |
else | |
{ | |
if(e.errorDescription == null || e.errorDescription == "") | |
{ | |
info("DATA: " + e.buffer.toString()); | |
//-- | |
try | |
{ | |
var s = "helloworld"; | |
var msg = "HTTP/1.1 200 OK\n"; | |
msg += "Date: Fri, 31 Dec 1999 23:59:59 GMT\n"; | |
msg += "Connection: close\n"; | |
msg += "Content-Type: text/html\n"; | |
msg += "Content-Length: " + s.length + "\n"; | |
msg += "\n"; | |
msg += s; | |
sock.write(Ti.createBuffer({value: msg})); | |
sock.close; | |
} catch (e) | |
{ | |
info('Exception: ' + e); | |
} | |
//-- | |
} | |
else | |
{ | |
info("READ ERROR: " + e.errorDescription); | |
} | |
} | |
} | |
var acceptedCallbacks = { | |
error : function(e) | |
{ | |
Ti.UI.createAlertDialog({ | |
title:"Socket error: " + e.socket.host, | |
message:e.error | |
}).show(); | |
removeSocket(e.socket); | |
} | |
}; | |
function removeSocket(sock) | |
{ | |
var index = connectedSockets.indexOf(sock); | |
if(index != -1) | |
{ | |
connectedSockets.splice(index, 1); | |
} | |
} | |
connect(); | |
///////////////////////////// |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment