node.js - Websocket 服务器未与节点服务器同时启动
问题描述
我正在尝试编写一个基于 Nodejs 的简单 WebSocket 服务器应用程序,但是当我运行npm run dev
.
这是我的package.json
文件:
"name": "lg-chain",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "jest --watchAll",
"dev-test": "nodemon dev-test",
"start": "node ./app",
"dev": "nodemon ./app"
},
"keywords": [],
"license": "MIT",
"devDependencies": {
"jest": "24.1.0",
"nodemon": "1.18.9"
},
"dependencies": {
"body-parser": "1.18.3",
"crypto-js": "3.1.9-1",
"express": "4.16.4",
"ws": "6.1.3"
}
}
我开发了一个 http 服务器和 websocket 服务器,我的期望是当我运行上面提到的那个命令时它们都会启动。
下面是我的 websocket 服务器:
const Websocket = require('ws');
const P2P_PORT = process.env.P2P_PORT || 5001;
const peers = process.env.PEERS ? process.env.PEERS.split(',') : [];
class P2pServer {
constructor(blockchain) {
this.blockchain = blockchain;
this.sockets = [];
}
listen() {
const server = new Websocket.Server({ port: P2P_PORT });
server.on('connection', socket => this.connectSocket(socket));
this.connectToPeers();
console.log(`Listening for peer-to-peer connections on: ${P2P_PORT}`);
}
connectToPeers() {
peers.forEach((peer) => {
const socket = new Websocket(peer);
socket.on('open', () => this.connectSocket);
});
}
connectSocket(socket) {
this.sockets.push(socket);
console.log('Socket connected');
}
}
module.exports = P2pServer;
这是我的快递服务器:
const express = require('express');
const bodyParser = require('body-parser');
const Blockchain = require('../blockchain');
const P2pServer = require('./p2p-server');
const HTTP_PORT = process.env.HTTP_PORT || 3001;
const app = express();
const bc = new Blockchain();
const p2pServer = new P2pServer(bc);
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.get('/blocks', (req, res) => {
res.json(bc.chain);
});
app.post('/mine', (req, res) => {
const block = bc.addBlock(req.body.data);
console.log(`New block added: ${block.toString()}`);
res.redirect('/blocks');
});
app.listen(HTTP_PORT, () => console.log(`Listening on port ${HTTP_PORT}`));
p2pServer.listen();
我的快速服务器启动了,但我的 websocket 服务器绝对没有任何反应。我在任何地方都没有收到任何错误。如何开始使用 websockets 解决这个问题?
解决方案
推荐阅读
- sql - SQL IF ELSE 插入#temp 表问题
- python - python - 如何根据与python pandas中前一行的差异来移动列值?
- javascript - 这可以重构为示例中更可组合的样式吗?
- java - org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild:开始:org.apache.catalina.LifecycleException
- c - 如何从 flex 文件中读取规则(定义)?
- algorithm - 最小和大于或等于 k 的子集
- terraform - 如何从 Kubernetes_secret terraform 资源中获取 data.token
- google-chrome - webrtc中的v4l2loopback标签
- android - React-native 没有找到 Genymotion
- python - 运行代码时出现错误“SyntaxError: invalid syntax”