簡體   English   中英

openshift / nodeJS中的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 });

結果:

  • 獲取http://****-****.rhcloud.com:8000 / socket.io /?EIO = 2&transport = polling&t = 1446734825100-0 net :: ERR_CONNECTION_TIMED_OUT *

我試過的東西

使用端口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上的Socket.io和節點

OpenShift NodeJS部署:socket.io index.html端口分配等

無法在openshift上部署nodejs socket io應用程序

無法使用OpenShift運行socket.io和nodejs

Socket.io.js在OpenShift上返回404

我還克隆了一些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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM