1. 程式人生 > 其它 >express 學習之ws 小坑記

express 學習之ws 小坑記

技術標籤: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 測試

2. 使用 socket.io 做伺服器

3. 使用ws 做伺服器