WebSockets 生产就绪的 Java 服务器?

2022-09-01 11:11:22

编辑:删除了对C#的引用,因为唯一被接受的答案是关于Java的。如果有人需要有关 C# 中 websocket 服务器实现的信息,请提出一个新问题。

您知道在Java中创建WebSockets Server的“生产就绪”框架吗?我找到了一个库 http://nugget.codeplex.com/,但我不知道它是如何稳定和快速的。


答案 1

接受的答案是3年前,随着JEE7的最新版本,现在每个实现servert 3.1的Web容器都将通过标准API(javax.websocket)包支持websocket

下面的代码显示了如何使用 JEE7 实现 websocket 的示例:

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());
    }
}

此处提供详细示例。

支持 Websocket 的 Web 容器:


答案 2

对于Java,请查看这篇内容丰富的文章。从那里复制粘贴:

在这些选项中,我想JettyResin是最成熟和最稳定的。但是,做自己的测试总是好的。


推荐