From b53510a26f6c872cb526d353d48e9d1eca74f2d4 Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Mon, 19 Jun 2017 10:07:59 +0800 Subject: [PATCH] --- src/org/redkale/net/http/WebSocketRunner.java | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/src/org/redkale/net/http/WebSocketRunner.java b/src/org/redkale/net/http/WebSocketRunner.java index bf0c06347..c9f2380d4 100644 --- a/src/org/redkale/net/http/WebSocketRunner.java +++ b/src/org/redkale/net/http/WebSocketRunner.java @@ -109,19 +109,32 @@ class WebSocketRunner implements Runnable { if (packet.type == FrameType.TEXT) { Convert textConvert = webSocket.getTextConvert(); - Object message = textConvert.convertFrom(webSocket._messageTextType, packet.receiveMasker, packet.receiveBuffers); - if (readBuffer != null) { - readBuffer.clear(); - channel.read(readBuffer, null, this); - } - try { - if (restMessageConsumer != null) { //主要供RestWebSocket使用 - restMessageConsumer.accept(webSocket, message); - } else { - webSocket.onMessage(message, packet.last); + if (textConvert == null) { + byte[] message = packet.getReceiveBytes(); + if (readBuffer != null) { + readBuffer.clear(); + channel.read(readBuffer, null, this); + } + try { + webSocket.onMessage(new String(message, "UTF-8"), packet.last); + } catch (Exception e) { + context.getLogger().log(Level.SEVERE, "WebSocket onBinaryMessage error (" + packet + ")", e); + } + } else { + Object message = textConvert.convertFrom(webSocket._messageTextType, packet.receiveMasker, packet.receiveBuffers); + if (readBuffer != null) { + readBuffer.clear(); + channel.read(readBuffer, null, this); + } + try { + if (restMessageConsumer != null) { //主要供RestWebSocket使用 + restMessageConsumer.accept(webSocket, message); + } else { + webSocket.onMessage(message, packet.last); + } + } catch (Exception e) { + context.getLogger().log(Level.SEVERE, "WebSocket onTextMessage error (" + packet + ")", e); } - } catch (Exception e) { - context.getLogger().log(Level.SEVERE, "WebSocket onTextMessage error (" + packet + ")", e); } } else if (packet.type == FrameType.BINARY) { Convert binaryConvert = webSocket.getBinaryConvert();