2014-09-02 28 views
0

我正在使用Node.js和Socket.io編寫服務器/客戶端,並使用OpenShift進行託管。當我在本地運行代碼時,客戶端和服務器連接正常,但是一旦在OpenShift上,客戶端拒絕連接。Socket.io返回Uncaught RangeError和服務器上的文字javascript代碼,但本地正常工作

在本地,請求http://127.0.0.1:8000/socket.io/?EIO=2&transport=polling&t=1409632875121-110將返回適當的JSON響應。然而,在服務器上,請求是(編輯)超時。

編輯:以前錯誤返航字面上的socket.io/index.js代碼內容和投擲: 「未捕獲的RangeError:無效的字符串長度」 在sockets.io.js:3947

服務器

self.server = require('http').createServer(self.app); 
    self.io = require('socket.io').listen(self.server); 
    self.io.set('transports', ['websocket', 'polling', 'xhr-polling', 'jsonp-polling']); 

    ... 

    self.routes['/myip'] = function(req, res){ 
     res.setHeader('Content-Type', 'text/html'); 
     res.send("" + self.ipaddress); 
    } 

    ... 

    self.app.listen(self.port, self.ipaddress, function() { 
     console.log('%s: Node server started on %s:%d ...', 
        Date(Date.now()), self.ipaddress, self.port); 
    }); 

    self.server.listen("8000", self.ipaddress, function(){ 
     console.log("Starting another server"); 
    }); 

客戶端

var request = new XMLHttpRequest(); 
    request.open('GET', '/myip', false); // I want it synchronous 
    request.send(null); 

    if (request.status === 200) { 
     var ip = request.responseText 
     console.log(ip); 
     socket = io.connect("http://" + ip + ":8000"); 
    }else{ 
     socket = io.connect(); 
     alert('There were issues connecting to server. Expect odd issues.'); 
    } 
    socket.emit('set-host'); 

任何想法爲什麼這是在本地主機上工作,但沒有託管?

編輯:我相信「字符串長度」錯誤實際上是客戶端沒有找到服務器運行的症狀。我改變了代碼(如上所述)以確保客戶端連接到的IP與服務器上的IP相同。儘管如此,本地工作。上傳時崩潰。

編輯2:使用IP地址或在客戶端上連接的文字URL都會導致連接超時錯誤。

回答

0

我認爲你應該使用你的openshift url(類似app-domain.rhcloud.com)而不是服務器的IP地址,因爲所有東西都是使用虛擬主機託管的。另外,你的服務器應該監聽端口8080,而不是8000,但客戶端應該使用你的openshift url在端口8000上訪問它。

+0

使用文字url會導致「Uncaught RangeError」,我認爲客戶端找不到服務器。當我更改爲IP時,我得到一個超時錯誤,而這可能也找不到服務器。 – FunkyDelPueblo 2014-09-02 15:45:42

+0

您的服務器應該在端口8080上監聽,而不是8000端口,但是可以在端口8000上從外部訪問它。 – 2014-09-02 15:49:27

+0

Node.js當前正在端口8080上進行服務,因此無法在同一端口上啓動Socket.io服務器港口。我嘗試了9080的服務和9000訪問,但仍然超時。 – FunkyDelPueblo 2014-09-02 16:51:26

相關問題