package com.iwebpp.wspp.tests; import java.util.Date; import android.util.Log; import com.iwebpp.node.NodeContext; import com.iwebpp.node.NodeContext.IntervalListener; import com.iwebpp.wspp.WebSocket; import com.iwebpp.wspp.WebSocket.ErrorEvent; import com.iwebpp.wspp.WebSocket.MessageEvent; import com.iwebpp.wspp.WebSocket.OpenEvent; import com.iwebpp.wspp.WebSocket.onmessageListener; import com.iwebpp.wspp.WebSocket.onopenListener; import com.iwebpp.wspp.WebSocketServer; import junit.framework.TestCase; public final class WebSocketServerTest extends TestCase { private static final String TAG = "WebSocketServerTest"; private NodeContext ctx; public void testConnectPair() throws Exception { WebSocketServer.Options wssopt = new WebSocketServer.Options(); wssopt.port = 6668; wssopt.path = "/wspp"; WebSocketServer wss = new WebSocketServer(ctx, wssopt, new WebSocketServer.ListeningCallback() { @Override public void onListening() throws Exception { Log.d(TAG, "websocket server listening ..."); final WebSocket ws = new WebSocket(ctx, "ws://localhost:6668/wspp", null, new WebSocket.Options()); ws.onmessage(new onmessageListener(){ @Override public void onMessage(MessageEvent event) throws Exception { Log.d(TAG, "message: "+event.toString()); if (event.isBinary()) { Log.d(TAG, "binary message: "+event.getData().toString()); } else { Log.d(TAG, "text message: "+(String)(event.getData())); } } }); ws.onerror(new WebSocket.onerrorListener() { @Override public void onError(ErrorEvent event) throws Exception { Log.d(TAG, "ws error:"+event.getCode()+",message:"+event.getError()); fail("ws error:"+event.getCode()+",message:"+event.getError()); } }); ws.onopen(new onopenListener(){ @Override public void onOpen(OpenEvent event) throws Exception { ws.send("Hello, tom zhou", new WebSocket.SendOptions(false, false), null); ctx.setInterval(new IntervalListener(){ @Override public void onInterval() throws Exception { ws.send("Hello, tom zhou @"+new Date(), new WebSocket.SendOptions(false, true), null); } }, 3000); } }); } }); wss.onconnection(new WebSocketServer.onconnectionListener() { @Override public void onConnection(final WebSocket socket) throws Exception { Log.d(TAG, "new ws client:"+socket); socket.onmessage(new WebSocket.onmessageListener() { @Override public void onMessage(MessageEvent event) throws Exception { Log.d(TAG, "client message: "+event.toString()); if (event.isBinary()) { Log.d(TAG, "binary message: "+event.getData().toString()); socket.send(event.getData(), new WebSocket.SendOptions(true, true), null); } else { Log.d(TAG, "text message: "+(String)(event.getData())); socket.send(event.getData().toString()+"@srv", new WebSocket.SendOptions(false, false), null); } } }); socket.send("Hello@srv", new WebSocket.SendOptions(false, false), null); } }); } public void testConnectPairOverUDP() throws Exception { WebSocketServer.Options wssopt = new WebSocketServer.Options(); wssopt.port = 6668; wssopt.path = "/wspp"; wssopt.httpp = true; WebSocketServer wss = new WebSocketServer(ctx, wssopt, new WebSocketServer.ListeningCallback() { @Override public void onListening() throws Exception { Log.d(TAG, "httpp websocket server listening ..."); WebSocket.Options wsopt = new WebSocket.Options(); wsopt.httpp = true; final WebSocket ws = new WebSocket(ctx, "ws://localhost:6668/wspp", null, wsopt); ws.onmessage(new onmessageListener(){ @Override public void onMessage(MessageEvent event) throws Exception { Log.d(TAG, "httpp message: "+event.toString()); if (event.isBinary()) { Log.d(TAG, "httpp binary message: "+event.getData().toString()); } else { Log.d(TAG, "httpp text message: "+(String)(event.getData())); } } }); ws.onerror(new WebSocket.onerrorListener() { @Override public void onError(ErrorEvent event) throws Exception { Log.d(TAG, "httpp ws error:"+event.getCode()+",message:"+event.getError()); fail("httpp ws error:"+event.getCode()+",message:"+event.getError()); } }); ws.onopen(new onopenListener(){ @Override public void onOpen(OpenEvent event) throws Exception { ws.send("httpp Hello, tom zhou", new WebSocket.SendOptions(false, false), null); ctx.setInterval(new IntervalListener(){ @Override public void onInterval() throws Exception { ws.send("httpp Hello, tom zhou @"+new Date(), new WebSocket.SendOptions(false, true), null); } }, 3000); } }); } }); wss.onconnection(new WebSocketServer.onconnectionListener() { @Override public void onConnection(final WebSocket socket) throws Exception { Log.d(TAG, "httpp new ws client:"+socket); socket.onmessage(new WebSocket.onmessageListener() { @Override public void onMessage(MessageEvent event) throws Exception { Log.d(TAG, "httpp client message: "+event.toString()); if (event.isBinary()) { Log.d(TAG, "httpp binary message: "+event.getData().toString()); socket.send(event.getData(), new WebSocket.SendOptions(true, true), null); } else { Log.d(TAG, "httpp text message: "+(String)(event.getData())); socket.send(event.getData().toString()+"@srv httpp", new WebSocket.SendOptions(false, false), null); } } }); socket.send("httpp Hello@srv", new WebSocket.SendOptions(false, false), null); } }); } @Override protected void setUp() throws Exception { super.setUp(); this.ctx = new NodeContext(); } }