java - Websocket连接自动关闭?

标签 java javascript jakarta-ee websocket glassfish

我是网络套接字编程的新手...

我有以下 JavaScript 客户端代码:

var connection = new WebSocket('ws://localhost:8080/OmegaThings/registerdevice');

        connection.onopen = function () {              
            console.log("Socket has been opened state = " + connection.readyState);
            connection.send('Ping'); // Send the message 'Ping' to the server             
            connection.send('Websocket client');
        };

        console.log("Socket has been opened state = " + connection.readyState);
        connection.send('finish');

        // Log errors
        connection.onerror = function (error) {
        console.log('WebSocket Error ' + error);
        };

        // Log messages from the server
        connection.onmessage = function (e) {
        console.log('Server: ' + e.data);
        };   

Java 端点:

@ServerEndpoint("/registerdevice") 
public class RegisterDeviceEndPoint 
{
    private static final Logger LOG = Logger.getLogger(RegisterDeviceEndPoint.class.getName());

    @OnOpen  
    public void connectionOpened() 
    {    
        LOG.log(Level.INFO, "******************connection opened**************");
    }

    @OnMessage  
    public synchronized void processMessage(Session session, String message) 
    {    
        LOG.log(Level.INFO, "received message: {0}", message);
    }

   @OnClose  
   public void connectionClosed() 
   {    
       LOG.log(Level.INFO, "connection closed");  
   }
}

在 Firefox 控制台上我得到以下输出:

"Socket has been opened state = 1"
InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable
"Socket has been opened state = 0"

在 GlassFish 服务器日志上,我收到“ping”和“Websocket 客户端”,但连接在 onopen 事件退出后关闭(不确定),因此,最后一个词“finish”不会出现在日志和错误中发生。

我想知道我的代码是否正确?
导致错误的原因是什么? javascript 代码、GlassFish 服务器配置或 java 端点代码?

最佳答案

尝试更改 glassfish 8080 端口,例如:8887,或者确保您的防病毒/其他应用程序没有使用端口 80,我以前有过使用端口 80 的防病毒软件阻止我的服务器 Websocket 的经历。

关于java - Websocket连接自动关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26204654/

相关文章:

java - 在继承类中重载Javadoc

javascript - 提交时跳转到 anchor

javascript - 如何使用 promises 和 node.js 正确检查和记录 http 状态代码?

java - CopyOnWriteArrayList 和 synchronizedList 的区别

java - 基于 log4j-Jboss-size - RollingAppender

javascript - 错误 : $injector:modulerr ASP. 网络核心

jakarta-ee - JavaEE & JAX-RS : Resource Class Should Be Declared as Singleton or Stateless?

jakarta-ee - 当 LTPA token 过期时,WebSphere 8.5.5 上的 UnauthorizedSessionRequestException 与 vaadin Web 应用程序

spring - 在 Spring MVC model.addAttribute() 方法中传递一个新对象

java - 如何在 Eclipse 中设置 -Xss?