homebest 2023-12-01 09:47 采纳率: 75%
浏览 94
已结题

Node运行WebSocket服务器示例提示Upgrade Required

运行一个node最基本的websocket服务器示例,命令行正常提示服务器运行,监听端口也正常,但浏览器访问就提示Upgrade Required,这是什么情况?


const WebSocket = require('ws');

const server = new WebSocket.Server({ port: 8080 });

server.on('connection', (socket) => {
  console.log('客户端已连接');

  socket.on('message', (message) => {
    console.log(`收到消息: ${message}`);
    socket.send(`服务器收到: ${message}`);
  });

  socket.on('close', () => {
    console.log('客户端已断开连接');
  });
});

console.log('WebSocket服务器正在运行,监听端口8080');

  • 写回答

2条回答 默认 最新

  • DTcode7 前端领域优质创作者 2024-05-26 20:07
    关注

    答案引用自chatgpt生成,望对题主有所帮助/启发;若有帮助,还望采纳!

    这个问题可能是由于客户端尝试使用HTTP协议连接到WebSocket服务器,而WebSocket协议需要升级到WebSocket协议。为了解决这个问题,你需要确保客户端使用正确的协议(ws或wss)连接到WebSocket服务器。

    以下是一个简单的Node.js WebSocket服务器示例:

    1. 首先,确保你已经安装了ws库。如果没有,请运行以下命令安装:
    npm install ws
    
    1. 创建一个名为websocket-server.js的文件,并添加以下代码:
    const http = require('http');
    const WebSocket = require('ws');
    
    const server = http.createServer((req, res) => {
      res.writeHead(200, { 'Content-Type': 'text/plain' });
      res.end('Hello World
    ');
    });
    
    const wss = new WebSocket.Server({ server });
    
    wss.on('connection', (ws) => {
      console.log('Client connected');
    
      ws.on('message', (message) => {
        console.log(`Received message: ${message}`);
      });
    
      ws.send('Hello from WebSocket server');
    });
    
    server.listen(3000, () => {
      console.log('Server listening on port 3000');
    });
    
    1. 运行以下命令启动WebSocket服务器:
    node websocket-server.js
    
    1. 在客户端,你可以使用浏览器的JavaScript控制台或者编写一个简单的HTML页面来测试WebSocket连接。以下是一个使用浏览器JavaScript控制台的示例:
    const ws = new WebSocket('ws://localhost:3000');
    
    ws.addEventListener('open', () => {
      console.log('Connected to WebSocket server');
      ws.send('Hello from client');
    });
    
    ws.addEventListener('message', (event) => {
      console.log(`Received message: ${event.data}`);
    });
    

    确保在浏览器中打开一个支持WebSocket的网页,然后在浏览器的JavaScript控制台中运行上述代码。你应该能看到服务器和客户端之间的消息传递。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月7日
  • 已采纳回答 5月30日
  • 创建了问题 12月1日