繁体   English   中英

AWS的WebSocket握手错误

[英]WebSocket Handshake Error with AWS

我正在使用WebSocket在AWS EC2实例上运行Java服务器(具体来说是Jetty)以连接到客户端的浏览器。 当我在本地执行此操作(将服务器托管在我的计算机而非AWS上)时,它运行良好。 但是,当我将代码移到EC2实例时,我在客户端收到以下错误消息:

WebSocket connection to 'ws://Elastic_IP:8080/?username=name_of_user' failed: Error during WebSocket handshake: Unexpected response code: 500

我确保EC2实例将在端口8080上接受流量。

服务器端 ,尝试连接时出现很多java.lang.NoClassDefFoundError 我在本地运行它时没有得到这些错误。 当我在EC2实例上进行编译时可能会有问题,但是它确实可以编译而没有错误。 我正在本地使用Eclipse编译和运行代码,但是我正在EC2上手动编译和运行代码(带有很多类路径的javac )。 手动编译时可能会出错,但是我不确定该是什么错误。

任何帮助将不胜感激。

编辑
我自己进行了一些故障排除后,我意识到JSON.ParseException是问题的根源。 从服务器代码中删除对此类的所有调用后,握手完成,并且我能够在服务器和客户端之间建立连接。 但是,当我从客户端收到消息时,我现在遇到以下错误:

WARN:MyWebSocketHandler:qtp990368553-16: Unhandled Error (closing connection) 
java.lang.RuntimeException: Cannot call method public void 
MyWebSocketHandler#onMessage(org.eclipse.jetty.websocket.api.Session, java.lang.String) with args:
[org.eclipse.jetty.websocket.common.WebSocketSession, java.lang.String]

看来我将参数定义为org.eclipse.jetty.websocket.api.Session ,但是在运行时参数实际上是org.eclipse.jetty.websocket.common.WebSocketSession 关于这是怎么发生的或者我应该使用哪一个( SessionWebSocketSession )的任何想法? 我唯一需要的功能是在服务器和客户端之间发送字符串。

我想出了解决我问题的可能方法。 通过Eclipse,我可以将Java项目Export到可运行的jar中(将库“打包”到jar中)。 然后,使用java -jar <jar_filename>运行它将在服务器上运行,并且功能与本地计算机上相同。 但是,我注意到一些性能问题(启动缓慢),因此我认为这不是最佳解决方案,但是它是一个解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM