WebSockets production ready server in Java?

后端 未结 6 646
情书的邮戳
情书的邮戳 2020-11-28 04:57

EDIT: removed reference to C# as the only accepted answer is about Java. If someone needs information about websocket server implementation in C#, ask a new

6条回答
  •  一整个雨季
    2020-11-28 05:10

    The accepted answer is 3 years old, with the recent release of JEE7, now every Web Containers that implement servert 3.1 will support websocket via standard API (javax.websocket) package.

    The following code show example how to implement websocket using JEE7:

    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.websocket.OnClose;
    import javax.websocket.OnError;
    import javax.websocket.OnMessage;
    import javax.websocket.OnOpen;
    import javax.websocket.Session;
    import javax.websocket.server.ServerEndpoint;
    
    @ServerEndpoint(value = "/chat")
    public class ChatServer {
    
        private static final Logger LOGGER = 
                Logger.getLogger(ChatServer.class.getName());
    
        @OnOpen
        public void onOpen(Session session) {
            LOGGER.log(Level.INFO, "New connection with client: {0}", 
                    session.getId());
        }
    
        @OnMessage
        public String onMessage(String message, Session session) {
            LOGGER.log(Level.INFO, "New message from Client [{0}]: {1}", 
                    new Object[] {session.getId(), message});
            return "Server received [" + message + "]";
        }
    
        @OnClose
        public void onClose(Session session) {
            LOGGER.log(Level.INFO, "Close connection for client: {0}", 
                    session.getId());
        }
    
        @OnError
        public void onError(Throwable exception, Session session) {
            LOGGER.log(Level.INFO, "Error for client: {0}", session.getId());
        }
    }
    

    Example in details here.

    Web Container that support Websocket:

    • Tomcat 8
    • WildFly (Previously Jboss AS)
    • Glassfish 4.0
    • and much more

提交回复
热议问题