提问人:ContentGamer 提问时间:7/31/2023 最后编辑:ContentGamer 更新时间:7/31/2023 访问量:56
如何将函数从服务器发送到客户端
How do i send a function from the server to the client
问:
我是在 NodeJS 和 ExpressJS 中发布请求的新手,我试图传入一个函数(不是函数的结果)以在客户端中被调用,我有这个监听器和这个帖子请求(我试图制作一个 discord 机器人 webview 工具)
服务器端
app.post("/dashboardstartup", jsonParser, (req, res) => {
// authClient is a discord client (Discord Bot)
if(authClient)
{
authClient.on("messageCreate", (message) => {
// always send the message once its created
res.json({
message
})
// the problem is that when I send the result the fetch request from the client stops
});
}
})
客户端
// ...
await fetch("http://localhost:8080/dashboardstartup", {
method: "POST";
headers: {
'Content-type': 'application/json'
}
}).then(a=>a.json()).then(a=>{
// once the fetch response is received, the fetch stops and the client can't listen to messages anymore
console.log(a.messsage) // prints out "Hello world!"
})
还有比 fetch 方法更好的方法吗?
答:
0赞
Sebastian Kaczmarek
7/31/2023
#1
您可以使用本机 response.write()
方法。
response.json()
方法来自 Express.js 包,它在发送响应后在内部关闭连接。
以下是如何使用的示例:.write()
authClient.on("messageCreate", (message) => {
// always send the message once its created
res.write(JSON.stringify({ message }), 'utf8');
});
它不会关闭连接,直到您手动执行此操作,并且客户端将继续侦听消息。因此,请记住在结束时也结束响应:authClient
authClient.on('close', () => res.end());
评论
0赞
ContentGamer
7/31/2023
客户端呢?我应该只使用 fetch 吗?
0赞
ContentGamer
7/31/2023
而一个不和谐的 BOT 客户端 (authClient) 没有事件,称为“关闭”
评论
Im trying to pass in a function (not the function's result) to get called in the client