此内容 v2.6.0 后支持

---



### 1、Java 使用示例


开发 WebSocket 客户端，借助一个小工具 [java-websocket-ns](https://gitee.com/noear/java-websocket-ns)：


```xml
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>java-websocket-ns</artifactId>
    <version>1.1</version>
</dependency>
```

 在 org.java-websocket 框架的基础上，加了点小便利：简化，心跳，自动重连，心跳定制。另外提醒：客户端的关闭使用 `release()` 替代 `close()`。`release()` 会同时停止心跳与自动重连！

```java
public class ClientApp {
    public static void main(String[] args) throws Throwable {
        //::启动客户端
        SimpleWebSocketClient client = new SimpleWebSocketClient("ws://127.0.0.1:18080") {
            //需要什么方法，就重写什么
            @Override
            public void onMessage(String message) {
                super.onMessage(message);
            }
        };

        //开始连接
        client.connectBlocking(10, TimeUnit.SECONDS);
        //开始心跳 + 心跳时自动重连
        client.heartbeat(20_000, true);

        //发送测试
        client.send("hello world!");

        //休息会儿
        Thread.sleep(1000);

        //关闭（使用 release 会同时停止心跳及自动重连）
        client.release();
    }
}
```


### 2、Javascript 使用示例

<mark>js 的原生 websocket 接口，没有自动心跳与断线重连</mark>，需要开发者自己处理。建议采用别的包装框架，或者升级为 socket.d 协议（带自动心跳与重连）

```javascript
<script type="text/javascript">
    let client = new WebSocket("ws://127.0.0.1:18080/demoe/websocket/13?guid=2");
    
    client.onmessage = function (s, ev) {
        if(ev == 'pong'){ //模拟心跳 pong 接收
            return;
        }
         //加业务代码
    }
    
    setInterval(function(){
        client.send("ping"); //模拟心跳 ping 发送
    },15_000);

    //测试发送
    client.send("hello world!");
</script>
```

服务端的心跳模拟（有些“浏览器”端，没有实现心跳协议）

```java
//服务端代码
public class DemoWs implements WebSocketListener {
    @Override
    public void onMessage(WebSocket socket, String text) throws IOException {
        if("ping".equals(text)){ //模拟心跳 ping 接收
            socket.send("pong"); //模拟心跳 pong 发送
            return;
        }
        
        ...
    }
    
    ...
}
```


