我在GoDaddy的共享主机上安装了node.js,可以运行节点应用程序。
我不确切地知道问题出在哪里,但是这里发生了什么。我运行服务器,它开始在端口上侦听(我尝试了从49000
到56000
的范围。)
但是当客户端尝试连接时,即访问' /'在服务器上,节点是静默的,因此它不接收任何连接请求。所以这种范围缩小到socket.io。
在几秒钟内在控制台中吐出这个:
socket.io-1.4.5.js:1 GET http://website.com:55872/socket.io/?EIO=3&transport=polling&t=LQRdEP9 net::ERR_CONNECTION_TIMED_OUT
我试图从cdn以及我自己的目录中获取socket.io - 没有。
这就是服务器的样子:
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
//------------- GLOBAL VARIABLES ---------------
SERVER_PORT = 55872;
connections = [];
//----------------------------------------------
server.listen(SERVER_PORT, "127.0.0.1");
console.log('................................................');
console.log('=> Server is listening on port: ' + SERVER_PORT);
console.log('................................................');
app.get('/', function(req, res){
console.log('=> Loading index.html!');
res.sendFile(__dirname + '/index.html');
});
// ----------- MIDDLEWARE ----------------------
// ----------- CONNECTIONS ---------------------
io.sockets.on('connection', function(socket){
connections.push(socket);
console.log('=> Client connected! Total connected: %s', connections.length);
// Disconnect socket
socket.on('disconnect', function(data){
connections.splice(connections.indexOf(socket), 1);
console.log('=> Client disconnected! Total connected: %s', connections.length);
});
客户端:
$(function(){
//--------- SOCKET INIT --------------
var socket = io.connect('http://website.com:55872/');
});
是socket.io或节点的问题,还是我......?
答案 0 :(得分:0)
GoDaddy目前不支持在共享主机上运行node.js服务器。您需要一个VPS帐户。 GoDaddy确实购买了Nodejitsu,所以他们可能会扩展他们的node.js产品,但是到目前为止你无法在GoDaddy共享主机上运行node.js服务器。
答案 1 :(得分:-1)
我有类似的问题让socket.io与express一起工作。以下是我工作的服务器代码的片段:
var express = require('express');
var app = express();
app.get('/', function(req, res) {
// to allow cross-origin requests
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
//...
});
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(process.env.PORT, process.env.IP, function() {
console.log("Listening!");
});
io.on('connection', function (socket) {
console.log("Got connection!");
//...
});
它与你所拥有的略有不同,可能会有所作为。否则,您的问题可能与node.js代码无关。
这是托管在免费的Cloud9工作区上的。我还在Heroku上安装了节点服务器......您应该尝试其中一个平台,因为他们对节点有官方支持。