首页 > 解决方案 > 节点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);
};

有谁知道客户端->服务器通信之间出了什么问题?如何检查问题出在客户端还是服务器上?我的服务器设置不正确,还是我的客户端?

亲切的问候,芥末造型师

标签: javascriptnode.jswebsocketws

解决方案


推荐阅读