gpt4 book ai didi

javascript - 带有 express 和 websocket 的 Node.js 在 WebSocket 握手期间给出错误 : Unexpected response code: 200

转载 作者:搜寻专家 更新时间:2023-11-01 00:49:59 26 4
gpt4 key购买 nike

所以我正在尝试建立一个也有 websockets 的网站,其中 http 服务器和 websocket 都在同一个端口上监听:

const WebSocket = require('ws');
var express = require('express');
var app = express();


wss = new WebSocket.Server({server : app});

app.get('/', function(req, res){

res.send('hello world!');
});


wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
console.log('received: %s', message);
});

ws.send('some text');
});


app.listen(8080, function(){

console.log('app started');
});

如果我随后在 chrome-browser 中加载服务器网站,我会看到“hello world!”。到目前为止,一切都很好。但是如果我打开网络控制台并尝试连接

var exampleSocket = new WebSocket("ws://192.10.10.30:8080");

我收到以下错误消息:

WebSocket connection to 'ws://192.10.10.30:8080/' failed: Error during WebSocket handshake: Unexpected response code: 200

我的第一个想法是,我是否必须显式声明一个 http-server ?

但是我看了这篇文章 Serve WebSocket and HTTP server at same address on Node.js并且没有明确声明 http 服务器。请帮我解决这个问题。

最佳答案

您正在将一个 Express 应用程序实例作为 server 传递,它应该是一个 HTTP/HTTPS 服务器实例。 app.listen 返回这样一个实例:

var app = express();
var server = app.listen(8080, function(){
console.log('app started');
});

wss = new WebSocket.Server({server : server});

关于javascript - 带有 express 和 websocket 的 Node.js 在 WebSocket 握手期间给出错误 : Unexpected response code: 200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53485713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com