Skip to content

Instantly share code, notes, and snippets.

@arkangelx
Last active July 21, 2016 10:20
Show Gist options
  • Save arkangelx/dec03ebc58406aab55f727ce398514d7 to your computer and use it in GitHub Desktop.
Save arkangelx/dec03ebc58406aab55f727ce398514d7 to your computer and use it in GitHub Desktop.
websocket debug
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var port = process.env.PORT || 3000;
server.listen(port, function () {
console.log('Server listening at port %d', port);
});
app.use(express.static(__dirname + '/public'));
//07-20 00:33:00.804 3342-3819/gaming.eatongate.com.kwiffapp.sit.sit I/MainActivityRESPONSE: Log Response for REQUEST :{"message":"session:login","timestamp":1469094661261,"requestId":"bfba6f73-43e6-4db6-a412-908109f1c323","payload":{"id":42}}
io.on('connection', function(socket) {
socket.on('request', function(data){
var result = { id: 42 }
socket.emit('response', {
message: data.message
, timestamp: Date.now()
, requestId: data.id
, payload: result
})
})
// THIS DOESN'T WORK AT ALL
socket.on('command', function(data, callback) {
var result = { foo: "bar" }
if (callback) { callback(result) }
});
//MODIFIED CODE ABOUT SLIGHTLY AND RESULT IS
//07-20 00:37:00.909 10714-10805/gaming.eatongate.com.kwiffapp.sit.sit I/MainActivityRESPONSE: Log Response for COMMAND VARIATION :{"message":{"foo":"bar -> COMMAND VARIATION"},"content":"{\"foo\":\"bar -> COMMAND VARIATION\"}"}
socket.on('commandvariation', function(data, callback) {
var result = { foo: "bar -> COMMAND VARIATION" }
socket.emit('commandvariation', { message: result,content:JSON.stringify(result)});
});
});
package gaming.eatongate.com.kwiffapp;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import org.json.JSONObject;
import java.io.UnsupportedEncodingException;
import gaming.eatongate.com.kwiffapp.requestbuilders.authentication.LoginRequestBuilder;
import io.socket.client.Socket;
import io.socket.emitter.Emitter;
public class MainActivity extends BaseActivity {
public static final String TAG = MainActivity.class.getSimpleName() + "RESPONSE";
private JSONObject loginPayload;
public static final String SESSION_STRING_SETUP = "setup";
public static final String SESSION_STRING_COMMAND = "command";
public static final String SESSION_STRING_COMMAND_VARIATION="commandvariation";
public static final String SESSION_STRING_PING = "pinged";
public static final String SESSION_STRING_SERVER_RECEIVED = "server_recieved";
public static final String SESSION_STRING_SERVER_PINGED = "server_ping";
public static final String SESSION_STRING_SERVER_DIRECT= "direct";
public static final String SESSION_STRING_SERVER_BROADCAST= "broadcast";
public static final String SESSION_STRING_SERVER_RESPONSE= "response";
public static final String SESSION_STRING_SERVER_REQUEST= "request";
private Socket mSocket;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
@Override
protected void onResume() {
super.onResume();
mSocket= KwiffApplication.getKwiffApplicationInstance().getSocket();
/**
* DEFAULT SET UP ..I need to know when a connection,disconnection or error occurs with
* the socket
*/
mSocket.on(Socket.EVENT_CONNECT, onConnect);
mSocket.on(Socket.EVENT_DISCONNECT, onDisconnect);
mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError);
/**
* PRIMARY FOCUS
* I HAVE sent a COMMAND my response should come back in this callback
* USING ANNONYMOUS OBJECT.....DOESN'T MAKE DIFFERENCE
*/
mSocket.on(SESSION_STRING_COMMAND, new Emitter.Listener() {
@Override
public void call(Object... args) {
JSONObject data = (JSONObject) args[0];
Log.i(TAG, "Log Response for COMMAND :" + data.toString());
}
});//receiving callback
/**
* PRIMARY FOCUS
* I HAVE sent a COMMANDVARIATION my response should come back in this callback
* USING ANNONYMOUS OBJECT.....DOESN'T MAKE DIFFERENCE
*/
mSocket.on(SESSION_STRING_COMMAND_VARIATION, new Emitter.Listener() {
@Override
public void call(Object... args) {
JSONObject data = (JSONObject) args[0];
Log.i(TAG, "Log Response for COMMAND Variation:" + data.toString());
}
});//receiving callback
//THIS BREAKS THE SERVER CODE --> BELOW
/* Server listening at port 3000
Missing error handler on `socket`.
TypeError: string is not a function
at Socket.<anonymous> (/var/www/urls/cft_access/services/web_socket/index.js:119:21)
at Socket.emit (events.js:98:17)
at Socket.onevent (/var/www/urls/cft_access/services/web_socket/node_modules/socket.io/lib/socket.js:335:8)
at Socket.onpacket (/var/www/urls/cft_access/services/web_socket/node_modules/socket.io/lib/socket.js:295:12)
at Client.ondecoded (/var/www/urls/cft_access/services/web_socket/node_modules/socket.io/lib/client.js:193:14)
at Decoder.Emitter.emit (/var/www/urls/cft_access/services/web_socket/node_modules/component-emitter/index.js:134:20)
at Decoder.add (/var/www/urls/cft_access/services/web_socket/node_modules/socket.io-parser/index.js:247:12)
at Client.ondata (/var/www/urls/cft_access/services/web_socket/node_modules/socket.io/lib/client.js:175:18)
at Socket.emit (events.js:95:17)
at Socket.onPacket (/var/www/urls/cft_access/services/web_socket/node_modules/engine.io/lib/socket.js:101:14)*/
mSocket.emit(SESSION_STRING_COMMAND, loginPayload, new Ack() {
@Override
public void call(Object... args) {
JSONObject data = (JSONObject) args[0];
Log.i(TAG, "Log Response for COMMAND WITH ACK CALLBACK :" + data.toString());
}
});//sending
/**
* PRIMARY FOCUS
* I HAVE sent a REQUEST my response should come here in this callback
* USING ANNONYMOUS OBJECT.....DOESN'T MAKE DIFFERENCE
*/
mSocket.on(SESSION_STRING_SERVER_RESPONSE, new Emitter.Listener() {
@Override
public void call(Object... args) {
JSONObject data = (JSONObject) args[0];
Log.i(TAG, "Log Response for REQUEST :" + data.toString());
}
});//receiving callback
mSocket.connect();
}
public void attemptLogin() {
try {
loginPayload = new LoginRequestBuilder.UserLoginRequestObjectBuilder().setEmail("test").setPassword("test").build();
// Log.i(TAG, "Login Attempt :" + loginPayload.toString());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
mSocket.emit(SESSION_STRING_COMMAND, loginPayload);//sending
mSocket.emit(SESSION_STRING_COMMAND_VARIATION,loginPayload);
mSocket.emit(SESSION_STRING_SERVER_REQUEST, loginPayload);//sending
}
private Emitter.Listener onConnect = new Emitter.Listener() {
@Override
public void call(Object... args) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,
"Connected", Toast.LENGTH_LONG).show();
attemptLogin();
}
});
}
};
private Emitter.Listener onDisconnect = new Emitter.Listener() {
@Override
public void call(Object... args) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,
"DisConnected", Toast.LENGTH_LONG).show();
}
});
}
};
private Emitter.Listener onConnectError = new Emitter.Listener() {
@Override
public void call(final Object... args) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,
"Error: " + args, Toast.LENGTH_LONG).show();
}
});
}
};
@Override
public void onDestroy() {
super.onDestroy();
mSocket.off(Socket.EVENT_CONNECT);
mSocket.off(Socket.EVENT_DISCONNECT);
mSocket.off(Socket.EVENT_CONNECT_ERROR);
mSocket.disconnect();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment