作者:莪系坏女孩2010 | 来源:互联网 | 2023-02-06 15:29
我在google firebase proyect的functions文件夹中的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
在命令提示符下执行时,这给了我错误:
您正在尝试将socket.io附加到快速请求处理函数.请传递一个http.Server实例.
是的,我在以下代码中传递和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){})
它再次给我以下错误:
您正在尝试将socket.io附加到快速请求处理函数.请传递一个http.Server实例.
我尝试使用该代码将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未定义
当我在localhost中运行此代码时:
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文件发送到导航器,正如我所期望的那样:
但是当我试图转换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!")})
,这似乎是不可能的.
1> Doug Stevens..:
您无法运行代码来使用云功能侦听某些端口.这是因为您不能保证只有一台机器或实例运行您的代码.它可以分布在所有并发运行的实例中.您不应该知道或关心是否发生这种情况 - 云功能只会扩展以满足您的功能需求.
如果部署HTTP类型函数,它将自动侦听https端口以获取项目的专用主机,并且可以向其发送Web请求.
如果要在持久保留的套接字上执行事务,请使用数据库中的实时数据库客户端写入值,然后使用您编写的数据库触发器函数响应这些写入.该函数可以通过在客户端正在侦听的位置将某些内容写回数据库来将数据发送回客户端.
你可能想要阅读文档并尝试先自己实现一些东西.Stack Overflow不适合广泛的开放式问题.