【发布时间】:2017-04-15 23:08:56
【问题描述】:
我在我的 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 时,这给了我错误:
您正在尝试将 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.,当我转到urlhttp://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!")})时出现问题,这似乎是不可能的。
【问题讨论】: