Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.61 KB | None | 0 0
  1. WebserverVerticle.java
  2.  
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. import java.util.concurrent.CopyOnWriteArrayList;
  6.  
  7. import static java.util.Arrays.asList;
  8.  
  9. import org.vertx.java.core.Handler;
  10. import org.vertx.java.core.eventbus.impl.JsonObjectMessage;
  11. import org.vertx.java.core.json.JsonObject;
  12. import org.vertx.java.platform.Verticle;
  13.  
  14. public class WebserverVerticle extends Verticle { // verticle = an Actor like class that communicates with other verticles over the event bus
  15.  
  16. private final CopyOnWriteArrayList<JsonObject> messages = new CopyOnWriteArrayList<>(); // messages stored as JSON objects
  17.  
  18. @Override
  19.  
  20. // What to do when the server has been started
  21. public void start(){
  22. Map<String, Object> serverConfig = new HashMap<>(); // store server configurations in a HashMap of type <String, Object>
  23. serverConfig.put("web_root", "C:\\Users\\theve\\OneDrive\\Documents\\NetBeansProjects\\vertx-chat-prototype-master\\src\\main\\webapp"); // Store the root of the web pages in the server configuration
  24. serverConfig.put("port", 8080); // Store the port in the server configuration
  25. serverConfig.put("bridge", true); // Enables bridging, stores in the server configuration
  26. serverConfig.put("inbound_permitted", asList(new HashMap<String, Object>())); // accept only inbound messages of a certain type
  27. serverConfig.put("outbound_permitted", asList(new HashMap<String, Object>())); // accept only outbound messages of a certain type
  28. HashMap<String, Object> sjsConfig = new HashMap<>();
  29. sjsConfig.put("prefix", "/chat");
  30. serverConfig.put("sjs_config", sjsConfig);
  31.  
  32. // A container is a verticle's view of the container that it's running in
  33. container.deployModule("io.vertx~mod-web-server~2.0.0-final", new JsonObject(serverConfig)); // deploy
  34.  
  35. // Event handler to determine what action to take when a user sends a message
  36. vertx.eventBus().registerHandler("messages/post", new Handler<JsonObjectMessage>() { // takes in a JSON object message from the event bus
  37. @Override
  38. public void handle(JsonObjectMessage message) {
  39. if (message.body().getValue("text")!=""){
  40. container.logger().info("messages/post: " + message.body()); // logs the message in the logger
  41. messages.add(message.body()); // adds the message to the list of messages
  42. vertx.eventBus().publish("messages/posted", message.body()); // publishes the message to all users on the event bus
  43. }
  44. }});
  45.  
  46. // Event handler to determine what action to take when a new user signs in
  47. vertx.eventBus().registerHandler("users/signIn", new Handler<JsonObjectMessage>() { // takes in a JSON object message from the event bus
  48. @Override
  49. public void handle(JsonObjectMessage message) {
  50. if (message.body().getValue("userName")!=""){
  51. container.logger().info("users/signIn: " + message.body()); // logs the sign in in the logger
  52. message.reply(new JsonObject().putNumber("status", 200)); // replies to the user to verify the sign in
  53. vertx.eventBus().publish("users/signedIn", message.body()); // publishes the signin to all users on the event bus
  54. }
  55.  
  56. }
  57. });
  58.  
  59. vertx.eventBus().registerHandler("commands/perform", new Handler<JsonObjectMessage>(){
  60. @Override
  61. public void handle(JsonObjectMessage message){
  62. container.logger().info("commands/perform: " + message.body());
  63. handleCommand(message.body().getValue("command").toString(),message.body().getValue("arg1").toString());
  64. }
  65. });
  66.  
  67. container.logger().info("Chat server started!"); // console out that the verticle has started
  68. }
  69.  
  70. //broken atm
  71. public void handleCommand(String command, String arg1){
  72. if(command == "help"){
  73. JsonObject helpMessage = new JsonObject();
  74. //helpMessage.put("userName":"Server");
  75. //helpMessage.put("message":"You asked for help");
  76. vertx.eventBus().publish("messages/posted", helpMessage);
  77. }
  78. }
  79.  
  80. }
  81.  
  82. vertxhandler.js
  83.  
  84. window.onload = function () {
  85. var eventBus = new vertx.EventBus("http://localhost:8080/chat");
  86. var userName = document.querySelector("input[name=userName]");
  87. var password = document.querySelector("input[name=password]");
  88. var userListContainer = document.getElementById("userListContainer");
  89. var chatContainer = document.getElementById("chatContainer");
  90. var chatHistory = document.getElementById("chatHistory");
  91. var newChat = document.getElementById("newChat");
  92. var signInContainer = document.getElementById("signInContainer");
  93.  
  94. eventBus.onopen = function () {
  95. eventBus.registerHandler("users/signedIn", function (message) {
  96. userListContainer.innerHTML += message.userName + " signed in<br/>";
  97. });
  98. document.getElementById("signIn").addEventListener("click", function (event) {
  99. eventBus.send("users/signIn", {
  100. userName: userName.value, password: password.value
  101. }, function (reply) {
  102. if (reply.status === 200) {
  103. userName.disabled = true;
  104. event.target.disabled = true;
  105. chatContainer.classList.remove("hidden");
  106. signInContainer.classList.add("hidden");
  107.  
  108.  
  109. document.getElementById("sendChat").addEventListener("click", function () {
  110. var text = newChat.value;
  111. if (text.substring(0, 1) === ".") {
  112. var args = text.split(' ');
  113. eventBus.send("commands/perform", {
  114. userName: userName.value,
  115. command: args[0],
  116. arg1: args[1]
  117. });
  118. }
  119. eventBus.send("messages/post", {
  120. userName: userName.value,
  121. text: text
  122. });
  123. newChat.value = "";
  124. }, false);
  125.  
  126. eventBus.registerHandler("messages/posted", function (message) {
  127. chatHistory.innerHTML += message.userName + ": " + message.text + "<br/>";
  128. });
  129. }
  130. });
  131. }, false);
  132.  
  133. };
  134. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement