我正在尝试通过IBM工具链在Cloud Foundry上建立一个socket.io连接。我经历了docs,并一直试图使socket.io连接到端口4443。我对此有些陌生,因此,如果您能提供一些有关如何设置套接字的指针,将不胜感激。在CF env上进行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
,因为它指的是表达实例所针对的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
设置,但似乎无法查明错误
谢谢!
答案 0 :(得分:0)
由于端口问题,我无法通过socket.io进行处理,但是我可以使用express-ws包使其运行