答案引用自chatgpt生成,望对题主有所帮助/启发;若有帮助,还望采纳!
这个问题可能是由于客户端尝试使用HTTP协议连接到WebSocket服务器,而WebSocket协议需要升级到WebSocket协议。为了解决这个问题,你需要确保客户端使用正确的协议(ws或wss)连接到WebSocket服务器。
以下是一个简单的Node.js WebSocket服务器示例:
- 首先,确保你已经安装了
ws
库。如果没有,请运行以下命令安装:
npm install ws
- 创建一个名为
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');
});
- 运行以下命令启动WebSocket服务器:
node websocket-server.js
- 在客户端,你可以使用浏览器的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控制台中运行上述代码。你应该能看到服务器和客户端之间的消息传递。