我正在尝试通过IBM Toolchains在Cloud Foundry上建立socket.io连接。我已经通过了docs并且一直试图让socket.io连接到端口4443.我对此有点新意,所以如果你能提供一些关于如何在CF上设置socket.io的指示,我将不胜感激。因为我仍然在努力消化部分文档。代码可以在下面找到。
//---------------------------
// app.js
//---------------------------
// Start the app on cloud foundry
var express = require('express');
var app = express();
var cfenv = require('cfenv');
var appEnv = cfenv.getAppEnv();
app.use(express.static(__dirname + '/public'));
app.listen(appEnv.port, '0.0.0.0', function() {
console.log("Server is starting on " + appEnv.url);
});
// Connect socket.io
var server = require('http').Server(app);
var io = require('socket.io')(server);
var cookieParser = require('cookie-parser');
app.get('/', function (req, res) {
res.sendFile(__dirname + 'public/index.html');
});
io.on('connection', function (socket) {
console.log('a user connected');
});
var port = 4443; // Cloud Foundry assigned port for TCP/WebSocket communications
server.listen(port, function() {
console.log('listening on ', port);
});
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect("https://0.0.0.0:4443");
</script>
通过socket.io文档后我的理解是提供的IP应该是location.hostname
,在这种情况下我认为是0.0.0.0
,因为它指的是应用程序的express实例正在监听的IP。虽然不太确定。
通过将其更改为:
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.slim.js"></script>
<script> var socket = io(); </script>
错误更改为404错误,并重复以下错误:“https://realtimetrafficanalysisaks.mybluemix.net/socket.io/?EIO=3&transport=polling&t=”。我已经检查过app
和server
设置,但似乎无法查明错误
提前致谢!
由于端口问题,我无法使用socket.io对此进行排序,但我能够使用express-ws包运行它