我剛剛開始學習節點,並將互聯網上的小碎片拼湊在一起。我希望使用節點的一件事是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();
像其他人似乎認爲要做的。但這些工作都沒有。我覺得這是我編寫服務器的一個問題,因爲我只是在找到它們時拼湊了一些東西。
其可能在您的heroku環境中已有另一個服務在8080上監聽,這會導致您的電子郵件無法路由 – Alex