使用SSL时，尽量用域名的形式连接（ws 可能会验证域名）。更多，请参考 node.js 关于 ssl 的信息。


### 1、单向认证

* 客户端

```javascript
const clientSession = await SocketD.createClient("sd:wss://localhost:8602/?u=a&p=2")
        .open();
```

* 服务端（只适用于 node.js）

```javascript
const options = {
  key: fs.readFileSync('/data/ssl/server.key'), 
  cert: fs.readFileSync('/data/ssl/server.crt'), 
  ca: fs.readFileSync('/data/ssl/ca.crt')
};

const httpServer = https.createServer(options, (req, res) => {
  // 可选：处理普通HTTPS请求
  res.writeHead(200);
  res.end('Hello, this is a secure server!');
});

SocketD.createServer("sd:ws")
       .config(c=>c.port(8602).fragmentSize(1024 * 1024).httpServer(httpServer).useSubprotocols(true))
       .listen(buildListener())
       .start();
```



### 2、双向认证

* 客户端（只适用于 node.js）

```javascript
const options = {
  key: fs.readFileSync('/data/ssl/server.key'), 
  cert: fs.readFileSync('/data/ssl/server.crt'), 
  ca: fs.readFileSync('/data/ssl/ca.crt')
};

const clientSession = await SocketD.createClient("sd:wss://localhost:8602/?u=a&p=2")
        .config(c=>c.sslContext(options))
        .open();
```

* 服务端（只适用于 node.js）

```javascript
const options = {
  key: fs.readFileSync('/data/ssl/server.key'), 
  cert: fs.readFileSync('/data/ssl/server.crt'), 
  ca: fs.readFileSync('/data/ssl/ca.crt'),
  requestCert:true, //表示请求客户端证书
  rejectUnauthorized:true //如果客户端没有提供有效证书（或证书不被 ca 信任），连接将被拒绝
};

const httpServer = https.createServer(options, (req, res) => {
  // 可选：处理普通HTTPS请求
  res.writeHead(200);
  res.end('Hello, this is a secure server!');
});

SocketD.createServer("sd:ws")
       .config(c=>c.port(8602).fragmentSize(1024 * 1024).httpServer(httpServer).useSubprotocols(true))
       .listen(buildListener())
       .start();
```

