gpt4 book ai didi

javascript - socket.emit从node.js客户端到浏览器客户端

转载 作者:行者123 更新时间:2023-12-02 15:53:17 26 4
gpt4 key购买 nike

我正在尝试从 Node.js 客户端向 Web 客户端发送消息。我假设这必须通过服务器完成。如有任何帮助,我们将不胜感激。

我在浏览器中看到的错误是:

获取http://10.1.0.47/socket.io/?EIO=3&transport=polling&t=1438260260496-8 net::ERR_CONNECTION_REFUSED

node.js 客户端:

socket.emit('clientMessage', jsonData, 'Pi-Voyager');

服务器:

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

var port = process.env.PORT || 8080;

server.listen(port, function() {
console.log('Gulp is starting my app on PORT: ' + port)
});

app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});

io.on("connection", function(socket) {

socket.on('clientMessage', function(jsonData, from) {
socket.emit('serverMessage', 'Got a message!', jsonData);
console.log('Data being sent from', from, 'is:\n' + jsonData);
});

});

网络客户端:

<body>
<h1>9.html</h1>
<div id="messages"></div>
<script src="/socket.io/socket.io.js"></script>
<script>

var socket = io.connect("/");

socket.on("serverMessage", function(msg) {
document.getElementById("messages").innerHTML += msg + "<br>";
})

</script>
</body>

最佳答案

您可能让服务器监听端口 8080。我认为您的客户端没有连接到那里。尝试改变

var port = process.env.PORT || 8080;

var port = process.env.PORT || 80;

此外,即使您实际连接,您也需要从 Web 应用程序和 Node 客户端应用程序获取两个不同的套接字。因为目前,您正在从套接字获取输入并将其写入同一个套接字 - 基本上是一个回显服务器。

从 io.on('connect') 回调中,您将获得一个套接字 - 这是与单个客户端的连接。如果你写信给它,你就是写给那个客户端,如果你从它接收,你就是从那个客户端接收。要使应用程序向所有客户端广播(例如聊天),您可以执行此操作。

var sockets = [];
io.on('connection', function(socket) {
sockets.push(socket);
socket.on('clientMessage', function(jsonData) {
for(var i = 0, len = sockets.length; i < len; ++i) {
sockets[i].emit('serverMessage', 'Got a message!', jsonData);
}
});
});

关于javascript - socket.emit从node.js客户端到浏览器客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31723945/

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