只要建立会话后，就可以自由的相互监听、相互发消息。这是非常重要的基础，很多场景会用到。

### 1、客户端

```javascript
//::打开客户端会话
const clientSession = await SocketD.createClient("sd:ws://127.0.0.1:8602/?u=a&p=2")
        .listen(SocketD.newEventListener().doOnMessage((Session session, Message message)=>{
                if (message.isRequest()) {
                    //答复
                    session.replyEnd(message, SocketD.newEntity("And you too."));
                }

                //使用会话属性，加个计数
                let count = session.attrOrDefault("count", 0);
                session.attrPut("count", ++count);

                if (count > 5) {
                    //超过5次后，停止互发
                    return;
                }

                //也主动发一个
                session.send("/demo3", SocketD.newEntity("Hi!"));
            }
        })
        .open();

//发送并请求（且，等待答复）
clientSession.sendAndRequest("/demo", SocketD.newEntity("hello wrold!")).thenReply(reply=>{
    //...
});
```

### 2、服务端（以 java 为例）



```java
public class Demo {
    public static void main(String[] args) throws Throwable {
        //::启动服务端
        SocketD.createServer("sd:ws")
                .config(c -> c.port(8602))
                .listen(new SimpleListener() {
                    @Override
                    public void onMessage(Session session, Message message) throws IOException {
                        if (message.isRequest() || message.isSubscribe()) {
                            //答复
                            session.replyEnd(message, new StringEntity("Server receive: " + message.entity()));
                        }

                        //然后，也主动发送一个
                        session.send("/demo2", new StringEntity("Hi!"));
                    }
                })
                .start();
    }
}
```
