Tag: java websocket

SSL握手exception:SSL库中的失败,通常是协议错误

我正在使用带有android v4.4.2(Java)和java_websockets的物理设备,并且在尝试连接到websocket时出现此错误。 javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x7aa38588: Failure in SSL library, usually a protocol error error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO: unknown protocol (external/openssl/ssl/s23_clnt.c:769 0x73a81cfc:0x00000000) 我找到了这个答案 ,我尝试实现它,但没有任何改变。 这是我获得NoSSLv3SocketFactory代码的NoSSLv3SocketFactory 。 它进入try catch直到最后一行mWebSocketClient.connect()但它没有进入catch, onError记录错误。 这是websocket设置代码。 … String complete = wsBase + ep; URI uri = new URI(complete); mWebSocketClient = new WebSocketClient(uri, new Draft_17()) { @Override public void onOpen(ServerHandshake serverHandshake) { […]

如何从正常请求调用中调用@SendTo,即@RequestMapping

我已经使用Spring MVC实现了Web Socket,它对我来说很好用,即从一个浏览器到另一个浏览器工作,这个浏览器是使用这个代码打开的。 @MessageMapping(“/hello”) @SendTo(“/topic/greetings”) public HelloMessage greeting(HelloMessage message) throws Exception { Thread.sleep(3000); // simulated delay return message; } 任何人都可以帮助我从正常的api控制器调用@SendTo(“/ topic / greetings”)。我尝试使用它但它对我不起作用 @RequestMapping(value = “/sendMessage”) @SendTo(“/topic/greetings”) public HelloMessage sendMessage() throws Exception { return new HelloMessage((int) Math.random(), “This is Send From Server”); } 对此有何看法? 谢谢

@serverendpoint路径在哪里映射(Websockets)

对于我使用spring框架的websocket,我有以下@serverendpoint路径: @ServerEndpoint(value=”/serverendpoint”, configurator = SpringConfigurator.class) 我的第一个问题是说我有一个urlwww.example.com 。 具有路径serverendpoint的serverendpoint在哪里被映射? 我可以在wss://example.com:$PORT/currentpage.html/serverendpoint访问我的serverendpoint wss://example.com:$PORT/currentpage.html/serverendpoint ? 或者这是错误的方式。 我有一台Wildfly 10服务器在运行。 基于另一个SO问题 ,我被告知要使用以下Uri: var wsUri = “wss://” + document.location.hostname + “:8443” + document.location.pathname + “/../serverendpoint”; 。 但是,当我这样做时,在谷歌浏览器中,我收到以下错误: WebSocket is already in CLOSING or CLOSED state. 我的console.log打印出websocket已连接,但后来我立即得到了上述错误。 我究竟做错了什么? 根据Wildfly服务器日志,我知道serverendpoint被映射: [io.undertow.websockets.jsr] (ServerService Thread Pool — 78) UT026003: Adding annotated server endpoint class com.voice2.spring.web.controller.serverendpoint for […]

访问WebSocket @ServerEndpoint中的HttpServletRequest属性

我需要访问HttpServletRequest属性来获取javax.servlet.request.X509Certificate ,其中包含TLS请求的X509Certificate证书数组。 从JAX-RS ContainerRequestFilter我可以轻松地从ContainerRequestContext.getProperty(String property)方法中提取它,但是我找不到从WebSocket Session获取它的方法,也没有找到HandshakeRequest ,我可以从中访问HttpSession实例但是不是HttpServletRequest之一。 注意:这不是在Web Socket @ServerEndpoint中从HttpServletRequest访问HttpSession的重复,因为我需要访问HttpServletRequest (或等效于提取TLS证书),而不是HttpSession 。 由于WebSocket是HTTP的超集,我想它应该是可能的,并希望Java团队想到了一种访问servlet属性的方法,但我真的找不到。 任何人都知道这是否可行?