Advertisement
The_red_Freak

Untitled

Jun 6th, 2017
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.13 KB | None | 0 0
  1. package me.the_red_freak.minecraftwebsocketserver.websocket;
  2.  
  3. import me.the_red_freak.minecraftwebsocketserver.serverstats.ServerStats;
  4. import me.the_red_freak.minecraftwebsocketserver.util.MessageHandler;
  5. import org.bukkit.Server;
  6. import org.java_websocket.WebSocket;
  7. import org.java_websocket.WebSocketImpl;
  8. import org.java_websocket.handshake.ClientHandshake;
  9. import org.java_websocket.server.WebSocketServer;
  10.  
  11. import java.io.IOException;
  12. import java.lang.annotation.Annotation;
  13. import java.lang.reflect.Method;
  14. import java.net.InetAddress;
  15. import java.net.InetSocketAddress;
  16. import java.net.UnknownHostException;
  17. import java.util.Collection;
  18.  
  19. /**
  20.  * Created by Max Mernacher on 29.04.2017.
  21.  */
  22.  
  23. @SuppressWarnings("ALL")
  24. public class WebsocketServer extends WebSocketServer {
  25.     public static WebsocketServer s;
  26.  
  27.     public WebsocketServer(int port) throws UnknownHostException {
  28.         super(new InetSocketAddress(port));
  29.     }
  30.  
  31.     public WebsocketServer(InetSocketAddress address) {
  32.         super(address);
  33.     }
  34.  
  35.     @Override
  36.     public void onOpen(WebSocket conn, ClientHandshake handshake) {
  37.         WebsocketSessionManager.getSessionManager().openSession(conn.getRemoteSocketAddress().getAddress().getHostAddress());
  38.         System.out.println(conn.getRemoteSocketAddress().getAddress().getHostName() + " has connected to the Websocket server!");
  39.     }
  40.  
  41.     @Override
  42.     public void onClose(WebSocket conn, int code, String reason, boolean remote) {
  43.         WebsocketSessionManager.getSessionManager().endSession(conn.getRemoteSocketAddress().getAddress().getHostAddress());
  44.         System.out.println(conn.getRemoteSocketAddress().getHostName() + " has disconnected form the Websocket server");
  45.     }
  46.  
  47.     @Override
  48.     public void onMessage(WebSocket conn, String message) {
  49.         System.out.println("Recieve Websocket packet - msg: " + message);
  50.         ServerStats.instance.messageHandler(message, conn.getRemoteSocketAddress().getAddress());
  51.     }
  52.  
  53.     public static void runServer() throws InterruptedException, IOException {
  54.         WebSocketImpl.DEBUG = false;
  55.         int port = ServerStats.getPlugin(ServerStats.class).getConfig().getInt("server.port");
  56.         s = new WebsocketServer(port);
  57.         s.start();
  58.         System.out.println("Websocket server started on port: " + s.getPort());
  59.     }
  60.  
  61.     @Override
  62.     public void onError(WebSocket conn, Exception ex) {
  63.         ex.printStackTrace();
  64.         if (conn != null) {
  65.             // some errors like port binding failed may not be assignable to a specific websocket
  66.         }
  67.     }
  68.  
  69.     public void sendToAll(String data) {
  70.         Collection<WebSocket> con = connections();
  71.         synchronized (con) {
  72.             for (WebSocket c : con) {
  73.                 c.send(data);
  74.             }
  75.         }
  76.     }
  77.  
  78.     public void sendToIP(String data, InetAddress address){
  79.         Collection<WebSocket> con = connections();
  80.         synchronized (con){
  81.             for(WebSocket c : con){
  82.                 if(c.getRemoteSocketAddress().getAddress().equals(address)){
  83.                     c.send(data);
  84.                 }
  85.             }
  86.         }
  87.     }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement