express 學習之ws 小坑記
阿新 • • 發佈:2020-12-15
技術標籤:nodejs# Expres學習
1. 使用express-ws 做伺服器 參考
- 安裝express-ws
省略 - app.js 配置
一定要在 匯入路由前 初始化 express-ws
var app = express();
var expressWs = require('express-ws')(app);
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
- bin/www 配置
由於 express-ws 在預設不新增server 引數情況下,使用的是app.listen 建立的httpserver,而express 腳手架將 app和server初始化分離了,所以需要再次配置express-ws
var server = http.createServer(app);
var expressWs = require('express-ws')(app, server);
- router 路徑
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
// res.send('respond with a resource');
res.render('user/index', {
layout: 'bootstrap'
})
});
router.get('/ws', function(req, res, next) {
res.render('user/ws', {
layout: 'bootstrap'
})
});
router.ws('/ws', function(ws, req){
ws.on('message', function(msg) {
ws.send(msg);
console.log(msg)
});
ws.send('test');
})
module.exports = router;
- 頁面測試
{{#section 'javascript' }}
<script>
var socket = new WebSocket('ws://localhost:3000/users/ws');
socket.addEventListener('open', function (event) {
console.log('socket is open')
//此處傳送資料,伺服器將收不到,估計是還沒有掛在 message 事件
});
socket.addEventListener('message', function (event) {
console.log('Message from server', event.data);
socket.send('test')
console.log('send ok')
});
</script>
{{/section}}
ws 測試