![](/img/trans.png)
[英]OpenShift WebSocket drop to xhr-polling no websocket
[英]Websocket failure in openshift / nodeJS
我知道這里已經提出了一些類似的問題,但是提出的解決方案似乎都沒有。 (我將在下面發布相關答案)
我無法獲得一個簡單的websocket應用程序來處理openshift。 該應用程序本身在本地運行 [編輯:我正在使用socket.io]
相關代碼:
服務器:
var express = require('express');
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io').listen(server);
server.listen(process.env.OPENSHIFT_NODEJS_PORT, process.env.OPENSHIFT_NODEJS_IP);
io.on('connection', function (socket) {
…
});
的index.html
<script src="/socket.io/socket.io.js"></script>
Client.js
this.socket = io.connect('http://app-domain.rhcloud.com:8000', {'forceNew':true });
結果:
我試過的東西
使用端口80而不是8000(在客戶端上)
結果: WebSocket連接到'ws://app-domain.rhcloud.com/socket.io/?EIO = 2&transport = websocket&sid = rsqAz33O_aYSFfN3AAAD'失敗:WebSocket握手期間出錯:意外響應代碼:400
交換服務器.list(...和var io = require('...
沒有結果
使用服務器的IP地址而不是http://app-domain.rhcloud.com
沒有結果
類似的問題
以下問題涉及同一問題,但到目前為止,所提出的解決方案都沒有奏效
OpenShift NodeJS部署:socket.io index.html端口分配等
無法在openshift上部署nodejs socket io應用程序
無法使用OpenShift運行socket.io和nodejs
我還克隆了一些socket.io/openshift的github示例,但所有這些都處理同樣的問題。
要么我做了一些完全錯誤的事情,要么在openshift上做了一些有趣的事情。
提前致謝。
我終於破解了它。 顯然,通過硬編碼服務器端的傳輸配置,它可以工作。
var io = require('socket.io', {
transports: ['websocket']
})(http);
希望這可以幫助將來的某個人。
當我在openshift上使用socket.io創建一個簡單的聊天應用程序時遇到了同樣的問題。 我在Stack Overflow上看了很多評論。 最后,我換了兩個地方。
首先,添加:
app.use(function(req,res,next)
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
next();})
其次,在需要socket.io模塊時添加一個選項。
var io = require('socket.io', {
transports: ['websocket']
})(http);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.