Skip to content

Instantly share code, notes, and snippets.

@rborn
Created April 5, 2014 08:34
Show Gist options
  • Save rborn/9989098 to your computer and use it in GitHub Desktop.
Save rborn/9989098 to your computer and use it in GitHub Desktop.
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