【发布时间】:2018-10-19 00:38:24
【问题描述】:
第一次发帖!
我是一个 jode js 新手,在学习 Heroku 教程时寻求帮助:https://devcenter.heroku.com/articles/node-websockets(选项 1)
我正在创建一个应用程序,它将使用带有 node.js、Heroku 和 express 的 web 套接字。当我直接运行上面示例中的 server.js 代码时,它可以工作。现在我正在尝试添加路由,但由于某种原因它会中断 Web 套接字连接。
server.js:
'use strict';
const express = require('express');
const SocketServer = require('ws').Server;
const path = require('path');
const PORT = process.env.PORT || 3000;
const INDEX = path.join(__dirname, 'index.html');
const server = express()
const ADMIN= path.join(__dirname, +'/admin/' + 'adminPage.html');
const wss = new SocketServer({ server });
var router = express.Router();
var app=express();
// home page route
router.get('/', function(req, res) {
res.sendFile(INDEX);
});
// admin page route
router.get('/admin', function(req, res) {
res.sendFile(ADMIN);
});
// apply the routes to our application
app.use(express.static('public'))
app.use('/', router);
app.listen(PORT, () => console.log(`Listening on ${ PORT }`));
wss.on('connection', (ws) => {
console.log('Client connected');
ws.on('close', () => console.log('Client disconnected'));
});
setInterval(() => {
wss.clients.forEach((client) => {
client.send(new Date().toTimeString());
});
}, 1000);
当前索引.html:
<p id='server-time'></p>
<script>
var HOST = location.origin.replace(/^http/, 'ws')
var ws = new WebSocket(HOST);
var el = document.getElementById('server-time');
ws.onmessage = function (event) {
el.innerHTML = 'Server time: ' + event.data;
};
</script>
重定向到管理页面有效,但 index.html 页面返回以下错误:
**WebSocket connection to 'ws://localhost:3000/' failed: Error during WebSocket handshake: Unexpected response code: 200**
我确定这是一个简单的错误,但我找不到它 - 感谢任何人的帮助!
【问题讨论】: