javascript - 节点ws服务器未接收到客户端信息
问题描述
我的 websocket 服务器没有得到任何信息。来自我的 websocket 客户端的消息没有通过,但反过来它确实有效。即客户端从服务器接收到消息“我已连接到你”并且套接字打开。
完整的server.js
const express = require('express');
const app = express();
const path = require('path');
app.use('/public', express.static(__dirname + '/public'));
app.get('/', (req, res) => {
console.log('express connection');
res.sendFile(path.join(__dirname, '/public/index.html'));
});
const http = require('http');
const server = http.createServer(app);
let PORT = process.env.PORT;
if (PORT == null || PORT == '') {
PORT = 3000;
};
const fs = require('fs');
const ws = require('ws');
const wsServer = new ws.Server({ server: server});
wsServer.on('connection', (client) => {
client.send("I'm connected to you!");
});
wsServer.on('request', (req) => {
console.log(req);
});
wsServer.on('data', (message) => {
console.log(message);
});
server.listen(PORT, () => {
console.log('Websocket server started at ' + PORT );
});
client.js中最重要的部分
var socket = new WebSocket('ws://localhost:3000');
// When the socket is open, send some data to the server
socket.onopen = function () {
console.log('[open] Connection established');
socket.send('New client');
};
// Log errors
socket.onerror = function (error) {
console.log('WebSocket Error ' + error);
};
// Log messages from the server
socket.onmessage = function (e) {
console.log('Server: ' + e.data);
};
socket.onclose = function(event) {
if (event.wasClean) {
alert(`[close] Connection closed cleanly, code=${event.code}
reason=${event.reason}`);
} else {
// e.g. server process killed or network down
// event.code is usually 1006 in this case
alert('[close] Connection died');
}
};
function toServer(data) {
if(!isOpen(socket)) {
console.log('error,socket is closed');
return;
} else {
socket.send(data);
console.log(`data sent to server`);
};
};
//test
function snapshot() {
//take snapshot and...
//...send image to server
toServer(data);
};
有谁知道客户端->服务器通信之间出了什么问题?如何检查问题出在客户端还是服务器上?我的服务器设置不正确,还是我的客户端?
亲切的问候,芥末造型师
解决方案
推荐阅读
- xml - 迷失在命名空间中:如何访问 XSLT 中的默认命名空间项
- javascript - 如何将内联 onclick 函数编写为 es6 箭头函数?
- javascript - 我如何在 am-chart (map-chart) 中添加自定义 html 标签
- java - 如何根据yml文件生成resttemplate?
- reactjs - 使用箭头函数作为变量或函数处理 React 中的事件?
- java - Java HashMap 按键插入时间排序 - 创意顺序
- kivy - 操作栏中的中心标题 - kivy
- button - 在 PyGame 中创建按钮
- r - 不包含项目的相关项目分数循环
- api - 网址查询参数