allow connection from outside of the interop channels
This commit is contained in:
parent
ecaed684fc
commit
b944b060c1
|
@ -2,17 +2,59 @@ import Collections.Stack
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import seekdasky.UTF8Encoding.encode
|
import seekdasky.UTF8Encoding.encode
|
||||||
import seekdasky.kWebSocket.Client
|
import seekdasky.kWebSocket.Client
|
||||||
|
import seekdasky.kWebSocket.Event
|
||||||
import seekdasky.kWebSocket.InteropEvent
|
import seekdasky.kWebSocket.InteropEvent
|
||||||
|
import seekdasky.kWebSocket.Listeners.AsynchronousListener
|
||||||
import seekdasky.kWebSocket.Listeners.InteropListener
|
import seekdasky.kWebSocket.Listeners.InteropListener
|
||||||
import seekdasky.kWebSocket.Message.InteropMessage
|
import seekdasky.kWebSocket.Message.InteropMessage
|
||||||
|
import seekdasky.kWebSocket.Message.buildTextMessage
|
||||||
|
|
||||||
object ConnectChannel : InteropListener {
|
object ConnectChannel : InteropListener, AsynchronousListener() {
|
||||||
|
|
||||||
private var lastGuestIndex = 0;
|
private var lastGuestIndex = 0;
|
||||||
|
|
||||||
private val notBoundYet = Stack<Pair<String, String>>(500);
|
private val notBoundYet = Stack<Pair<String, String>>(500);
|
||||||
private val connected = mutableMapOf<Client, String>();
|
private val connected = mutableMapOf<Client, String>();
|
||||||
|
|
||||||
|
override fun filter(c: Client): Boolean {
|
||||||
|
return c.URL == "/connect";
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun processClosed(e: Event) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun processConnection(c: Client) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun processEvent(e: Event) {
|
||||||
|
try {
|
||||||
|
val json = JSONObject(e.message.toString());
|
||||||
|
|
||||||
|
if(json.getString("type") == "guest"){
|
||||||
|
this.lastGuestIndex = ++this.lastGuestIndex % 500;
|
||||||
|
val guestName = "Guest"+this.lastGuestIndex;
|
||||||
|
val jsonReturn = JSONObject();
|
||||||
|
jsonReturn.put("error", false);
|
||||||
|
jsonReturn.put("name", guestName);
|
||||||
|
|
||||||
|
this.notBoundYet.push(Pair("guest",guestName));
|
||||||
|
|
||||||
|
|
||||||
|
e.client.send(buildTextMessage(jsonReturn.toString()));
|
||||||
|
}else{
|
||||||
|
val jsonReturn = JSONObject();
|
||||||
|
jsonReturn.put("error", "Admin or User login is disabled when using the websocket API, please use the REST API to access you account");
|
||||||
|
|
||||||
|
e.client.send(buildTextMessage(jsonReturn.toString()));
|
||||||
|
}
|
||||||
|
}catch (ex : Exception){
|
||||||
|
val jsonReturn = JSONObject();
|
||||||
|
jsonReturn.put("error",true);
|
||||||
|
e.client.send(buildTextMessage(jsonReturn.toString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun filter(e: InteropEvent): Boolean {
|
override fun filter(e: InteropEvent): Boolean {
|
||||||
try{
|
try{
|
||||||
|
|
|
@ -15,7 +15,9 @@ fun main(args: Array<String>){
|
||||||
|
|
||||||
server.addListener(Channel(server,"/chat"));
|
server.addListener(Channel(server,"/chat"));
|
||||||
server.addListener(emergencyChannel);
|
server.addListener(emergencyChannel);
|
||||||
server.addListener(eventChannel);
|
server.addListener(eventChannel)
|
||||||
|
server.addListener(ConnectChannel);
|
||||||
|
|
||||||
server.addInteropListener(PostMessage(emergencyChannel,eventChannel));
|
server.addInteropListener(PostMessage(emergencyChannel,eventChannel));
|
||||||
server.addInteropListener(DelMessage(emergencyChannel,eventChannel));
|
server.addInteropListener(DelMessage(emergencyChannel,eventChannel));
|
||||||
server.addInteropListener(UpdMessage(emergencyChannel,eventChannel));
|
server.addInteropListener(UpdMessage(emergencyChannel,eventChannel));
|
||||||
|
|
Loading…
Reference in New Issue