Jquery Socket.io不更改HTML

Jquery Socket.io不更改HTML,jquery,html,node.js,express,socket.io,Jquery,Html,Node.js,Express,Socket.io,在我的节点应用程序中,我使用Socket.io向客户端发送文本。我可以看到文本已成功地从服务器发送到客户端,但在客户端jQuery文件中,socket.io没有更新我的html server.js: const app = express(); const server = app.listen(3000, () => { console.log(`Web server up on port ${port}`); }); let io = require('socket.io')

在我的节点应用程序中,我使用Socket.io向客户端发送文本。我可以看到文本已成功地从服务器发送到客户端,但在客户端jQuery文件中,socket.io没有更新我的html

server.js:

const app = express();
const server = app.listen(3000, () => {
    console.log(`Web server up on port ${port}`);
});

let io = require('socket.io').listen(server);
io.on('connection', function(socket) {
  console.log('Connected socket!');
});

app.post('/findbrokenlinks', (req, res) => {

    ...

    // here i'm iterating through an array of links and if they are broken, I'm sending them to the client side

    links.forEach( (linkUrl) => {
        if (isBroken(linkUrl)) {
            io.sockets.emit("result", linkUrl);
        }
    }

}
index.js:

var socket = io('ws://localhost:3000', {transports: ['websocket']});

socket.on("result", function (data) {
    console.log(data);
    $('#results').append($('<p>').text(data));
});

我想出来了。我的网页现在通过添加以下代码行实时更新:

const-app=express();
const server=app.listen(3000,()=>{
log(`Web服务器在端口${port}`)上启动);
});
让io=require('socket.io')。侦听(服务器);
io.on('连接',函数(套接字){
log('Connected socket!');
});
app.post(“/findbrokenlinks”,(请求、回复)=>{
...
//在这里,我遍历一组链接,如果它们被破坏,我将把它们发送到客户端
对于每个(链接中的链接URL){
if(isbreak(linkUrl)){
io.sockets.emit(“结果”,linkUrl);
}
}
res.redirect('/findbrokenlinks');//添加此行!!
}

我找到了答案。我的网页现在通过添加以下代码行实时更新:

const-app=express();
const server=app.listen(3000,()=>{
log(`Web服务器在端口${port}`)上启动);
});
让io=require('socket.io')。侦听(服务器);
io.on('连接',函数(套接字){
log('Connected socket!');
});
app.post(“/findbrokenlinks”,(请求、回复)=>{
...
//在这里,我遍历一组链接,如果它们被破坏,我将把它们发送到客户端
对于每个(链接中的链接URL){
if(isbreak(linkUrl)){
io.sockets.emit(“结果”,linkUrl);
}
}
res.redirect('/findbrokenlinks');//添加此行!!
}

如果我从您之前的评论中理解正确,则“搜索断开的链接”的迭代仅在服务器收到POST请求时发生,因此很可能不会有任何实时更新。但是,如果此行为是有意的,您需要调用
res.end()
,因为您没有调用
res.send()
发送数据。

如果我从您之前的评论中理解正确,“搜索断开的链接”的迭代仅在服务器收到POST请求时发生,因此很可能不会有任何实时更新。但是,如果此行为是有意的,则需要调用
res.end()
因为你没有调用
res.send()
来发送数据。

Uhh,
for each(linkUrl in links){…}
是无效的Javascript。也许你的意思是
for(let linkUrl of links){…}
@jfriend00你说得对。我会更新它。Uhh,
for each(linkUrl in links){…}
不是有效的Javascript。也许你的意思是
for(让链接的链接URL){…}
@jfriend00你是对的。我会更新它。当我有res.redirect()时,我还需要res.end()吗在我的POST请求结束时?你是对的,搜索断开的链接只会在POST请求上发生,但不知何故,我在添加res.redirect…?res.redirect()调用res.end()本身,没有理由再次调用res.end()。你有app.get('/findbrokenlinks',())吗路由设置以及对请求的响应?是的,我有一个应用程序。get(“/findbrokenlinks”,…)已设置,很高兴你能解决它!感谢你的回答:)当我有res.redirect()时,我还需要res.end()吗在我的POST请求结束时?你是对的,搜索断开的链接只会在POST请求上发生,但不知何故,我在添加res.redirect…?res.redirect()调用res.end()本身,没有理由再次调用res.end()。你有app.get('/findbrokenlinks',())吗路由设置以及对请求的响应?是的,我有一个应用程序。get(“/findbrokenlinks”,…)已设置,很高兴您能解决它!感谢您的响应:)
[Log] https://gmail.com/deadlink (server.js, line 74)
[Log] https://www.facebook.com/awg;alwmg;lawkg (server.js, line 74)
[Log] https://github.com/alwfl (server.js, line 74)
> Selected Element
< <div id="results">
<p>https://gmail.com/deadlink</p>
<p>https://www.facebook.com/awg;alwmg;lawkg</p>
<p>https://github.com/alwfl</p>
</div>