gpt4 book ai didi

firebase - 如何将 socket.io 附加到 google firebase 应用程序功能?

转载 作者:行者123 更新时间:2023-12-03 18:41:38 25 4
gpt4 key购买 nike

我在位于我的 google firebase proyect 函数文件夹中的 index.js 文件中有以下代码:

net=require('express')()
net.get('/',function(req,res){res.sendFile(__dirname+'/slave.htm')})
exports.run=require('firebase-functions').https.onRequest(net)
require('socket.io').listen(net).on("connection",function(socket){})

但是当我在命令提示符下执行 \gfp1>firebase deploy 时,这给了我错误:

You are trying to attach socket.io to an express request handler function. Please, pass a http.Server instance.



是的,我在以下代码中传递和 http 服务器实例:
net=require('firebase-functions').https.onRequest((req,res)=>{res.send("socket.io working!")})
exports.run=net;require('socket.io').listen(net).on("connection",function(socket){})

它再次给我以下错误:

You are trying to attach socket.io to an express request handler function. Please, pass a http.Server instance.



我尝试使用该代码将 socket.io 附加到 firebase 函数:
net=https.onRequest((req,res)=>{res.send("socket.io working!")})
exports.run=require('firebase-functions').net
require('socket.io').listen(require('firebase-functions').net).on("connection",function(socket){})

这给出了这个错误:

https is not defined



当我在本地主机中运行此代码时:
app=require('express')()
app.get('/',function(req,res){res.sendFile(__dirname+'/slave.htm')})
net=require('http').createServer(app);net.listen(8888,function(){console.log("Server listening.")})
require('socket.io').listen(net).on("connection",function(socket){})

控制台发出 \gfp>Server listening. ,当我转到 url http://127.0.0.1:8888 时,它​​会按照我的预期向导航器发送 html 文件:
<script>
document.write("File system working!")
document.body.style.backgroundColor="black"
document.body.style.color="white"
</script>

但是当我尝试将 net=require('http').createServer(app);net.listen(8888,function(){console.log("Server listening.")}) 转换为 net=exports.run=require('firebase-functions').https.onRequest((req,res)=>{res.send("Firebase working!")}) 时出现问题,这似乎是不可能的。

最佳答案

您无法使用 Cloud Functions 运行代码来监听某些端口。这是因为您不能保证只有一台机器或实例运行您的代码。它可以分布在许多同时运行的实例中。您不应该知道或关心是否会发生这种情况 - Cloud Functions 只会扩展以满足对您的功能的需求。

如果你部署了一个 HTTP 类型的函数,它会自动监听你项目专用主机的 https 端口,你可以向它发送 Web 请求。

如果要通过持久保持的套接字执行事务,请使用数据库中的实时数据库客户端写入值,然后使用您编写的数据库触发器函数响应这些写入。该函数可以通过将一些内容写回客户端正在监听的位置的数据库来将数据发送回客户端。

关于firebase - 如何将 socket.io 附加到 google firebase 应用程序功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43432132/

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