gpt4 book ai didi

node.js - 如果不是本地主机,则无法让浏览器连接到nodejs WS服务器

转载 作者:太空宇宙 更新时间:2023-11-03 22:55:40 24 4
gpt4 key购买 nike

我一直在努力找出我不明白的地方:我的本地网络上的计算机上运行着一个 NodeJS websocket 服务器。通过该计算机的浏览器,我可以与 websocket 服务器进行通信。但是,从同一网络上的任何其他计算机,我都会收到错误代码 1006 的强制 closeEvent。

附件是服务器和客户端文件。客户端文件也从同一位置提供。任何有助于扩大我的理解的帮助将不胜感激。

谢谢!

<小时/>

ws_server.js

var fs = require('fs');
var path = require('path');
var httpServer = require('http').createServer(
function(request, response) {
if(request.url != ''){//request.url is the file being requested by the client
var filePath = '.' + request.url;
if (filePath == './'){filePath = './ws_client.html';} // Serve index.html if ./ was requested
var filename = path.basename(filePath);
var extname = path.extname(filePath);
var contentType = 'text/html';
fs.readFile(filePath, function(error, content) {
response.writeHead(200, { 'Content-Type': contentType });
response.end(content, 'utf-8');
});
}
}
).listen(8080);

var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({server:httpServer});
wss.on('connection', function(ws) {
ws.on('message', function(message) {
console.log('received: %s', message);
ws.send("You said: "+ message);
});
});
<小时/>

ws_client.html

<html>
<head>
<title>WS</title>
<script>
var connection = new WebSocket('ws://127.0.0.1:8080');
connection.onopen = function () {connection.send("The time is " + new Date().getTime());};
connection.onmessage = function (e) {document.getElementById("capture").innerHTML = e.data;};
connection.onclose = function(event) {console.log(event);};
</script>
</head>
<body>

<textarea id="capture"></textarea>

</body>
</html>

最佳答案

也许这只是代码中的拼写错误,但是您在从另一台计算机尝试时是否更改了 ws://127.0.0.1:8080 中的地址?

127.0.0.1 始终引用本地主机,这不是您想要的。

您应该输入本地地址(例如 192.168.0.5),或者更好:new WebSocket('/');,它将连接到相同的地址主机和端口作为页面。

关于node.js - 如果不是本地主机,则无法让浏览器连接到nodejs WS服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15308414/

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