2016-03-31 120 views
0

我剛剛開始學習節點,並將互聯網上的小碎片拼湊在一起。我希望使用節點的一件事是SendGrid從客戶端發送電子郵件。我曾經通過在socket.io客戶端手動輸入socket = io.connect(http://localhost:8080);(就像所有人說的那樣)工作。在當地運行良好,直到我去託管它在heroku或類似的服務。套接字IO未連接到正確的服務器。

這裏是我的服務器代碼看起來像(以下功能並不重要,因爲它們只是運行sendgrid東西:

var express = require('express'); 
var app = express(); 

var server = require('http').createServer(app); 
var io = require('socket.io')(server); 

// This is the socket.io port. I want the client to go through this. 
server.listen(8080); 

// this is used to serve a static html page in the public folder. 
// I feel like the way I have this set up is part of the issue 
app.set('port', (5000)); 
app.use(express.static(__dirname + '/public')); 

app.listen(app.get('port'), function() { 
    console.log('Node app is running on port ' + app.get('port')); 
}); 

我去地址http://localhost:5000查看HTML服務器。

這裏是客戶代碼,我已經寫了:

// Init the socket 
socket = io.connect('http://localhost'); 
// send stuff through it. this stuff doesnt matter. but it sends values 
// Via json to the server to then use in an email. 
socket.emit('sendCompile', {adr: receptients, bod: body }); 

這給了我錯誤:

socket.io-1.4.5.js:1 GET 
http://localhost/socket.io/? 
EIO=3&transport=polling&t=LFC_cxO 

任何幫助,將不勝感激。 (我一直在這個工作超過5小時:D)

PS:我已經試過改變它socket = io();socket = io.connect();像其他人似乎認爲要做的。但這些工作都沒有。我覺得這是我編寫服務器的一個問題,因爲我只是在找到它們時拼湊了一些東西。

+0

其可能在您的heroku環境中已有另一個服務在8080上監聽,這會導致您的電子郵件無法路由 – Alex

回答

-1

您需要將域名從本地主機更改到任何您的網站,並添加端口,如:

socket = io.connect('http://localhost'); 

應該成爲

socket = io.connect('http://mywebsite.com:8080'); 

還要注意的是端口您正在使用的插座需要開放 - 如果端口未打開,您將遇到更多問題。

+0

他不需要使用mywebsite.com,使用localhost將解析爲該網站的框因此託管在localhost(本機)上。然而,你關於開放港口的觀點是有效的,應該進行調查。 – Alex

+0

如果我想用localhost測試它會怎樣?有沒有辦法自動化這個,所以我不必手動將其更改爲本地主機? – Luexco

相關問題