Skip to content

Commit 95870e2

Browse files
committed
✨ Rewrite websocket demo
1 parent 1db63cc commit 95870e2

File tree

4 files changed

+37
-78
lines changed

4 files changed

+37
-78
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ app.use('/wechat', require('./routes/wechat-message-callback'))
3939
| 文件名 | 介绍 |
4040
| ------------ | ---- |
4141
| [wechat-message-callback.js](https://github.com/leancloud/leanengine-nodejs-demos/blob/master/routes/wechat-message-callback.js) | 接收并自动回复 [微信公众平台的用户消息回调](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140543) |
42+
| [websocket.js](https://github.com/leancloud/leanengine-nodejs-demos/blob/master/routes/websocket.js) | 简单的 WebSocket 示例:将客户端发来的消息原样发回客户端(echo)、每隔一秒向客户端发送一条消息(timer) |
4243

4344
## 其他 Demo
4445

app.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1+
const AV = require('leanengine')
2+
const bodyParser = require('body-parser')
13
const express = require('express')
2-
const timeout = require('connect-timeout')
34
const path = require('path')
4-
const bodyParser = require('body-parser')
5-
const AV = require('leanengine')
6-
const expressWs = require('express-ws')
5+
const timeout = require('connect-timeout')
76

87
// 加载云函数定义,你可以将云函数拆分到多个文件方便管理,但需要在主文件中加载它们
98
require('./cloud')
109

1110
const app = express()
1211

1312
// 启用 WebSocket 支持,如不需要可去除
14-
expressWs(app)
13+
require('express-ws')(app)
1514

1615
// 设置模板引擎
1716
app.set('views', path.join(__dirname, 'views'))

routes/websocket.js

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,42 @@
1-
var express = require('express');
2-
var expressWs = require('express-ws');
1+
var {Router} = require('express')
32

4-
var router = express.Router();
3+
const router = module.exports = new Router
54

65
/*
76
* WebSocket 示例
87
*
9-
* 你还需要在 app.js 中添加 `expressWs(app);`
8+
* 注意检查 app.js 中需要有 `require('express-ws')(app)`
9+
*
10+
* 可以使用 wscat 或 websocat 来对 WebSocket API 进行测试
11+
* https://github.com/websockets/wscat
12+
* https://github.com/vi/websocat
13+
*
14+
* 安装依赖:
15+
*
16+
* npm install express-ws
17+
*
1018
*/
1119

12-
router.get('/', (req, res) => {
13-
res.render('websocket.ejs');
14-
});
15-
20+
/*
21+
* 将客户端发来的消息原样发回客户端
22+
* wscat -c ws://localhost:3000/websocket/echo
23+
*/
1624
router.ws('/echo', (ws, req) => {
1725
ws.on('message', (msg) => {
18-
ws.send(msg);
19-
});
20-
});
26+
ws.send(msg)
27+
})
28+
})
29+
30+
/*
31+
* 每隔一秒向客户端发送一条消息
32+
* wscat -c ws://localhost:3000/websocket/timer
33+
*/
34+
router.ws('/timer', (ws, req) => {
35+
const intervalId = setInterval( () => {
36+
ws.send('Hello')
37+
}, 1000)
2138

22-
module.exports = router;
39+
ws.on('close', (msg) => {
40+
clearInterval(intervalId)
41+
})
42+
})

views/websocket.ejs

Lines changed: 0 additions & 61 deletions
This file was deleted.

0 commit comments

Comments
 (0)