Я создал частную чатовую систему с использованием Node.js и Socket.io на моем локальном сервере разработки, и он отлично работает, отправляет сообщения , обновляет базу данных всякий раз, когда клиент принимает событие сообщения. Тем не менее, за последние два дня я пытался подтолкнуть его к моему серверу Rackspace. Я беседовал с Rackspace, и они развернули мой узел-сервер, у меня есть console.log, который печатает «Сервер, прослушивающий порт: xxxx». Я отправлю свой код сервера node.js, а также некоторые из моего кода клиента. Я просто не уверен, что происходит не так, поскольку он отлично работал на моем местном развитии. Консоль Chrome дает мне сообщение об ошибке «io не определено», что заставляет меня думать, что он не загружает socket.io/socket.io.js с узла сервера. Однако я думал, что это даст мне ошибку в запросе GET.Node.js и Socket.io перемещаются с локального сервера разработки на живой сервер, а не на соединение
Я новичок в Node.js и Socket.io и не понимаю все об этом. Я пытаюсь использовать это на хосте vhost, может ли это вызвать проблему?
var express = require('express');
app = require('http').createServer(handler),
//server = require('http').createServer(app),
io = require('socket.io')(app);
fs = require('fs');
app.listen(3000, function() {
console.log("Server listening on: 3000");
});
var clients = {};
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
//app.get('/', function(req, res){
// res.sendFile(__dirname + '/index.html');
//});
io.sockets.on('connection', function(socket){
console.log("Connected!");
socket.emit('news', { hello: 'world' });
socket.on('add-user', function(data){
clients[data.username] = {"socket" : socket.id};
console.log(data.username+'/'+clients[data.username].socket);
});
socket.on('private-message', function(data){
console.log("Sending: " + data.content + " to " + data.username);
if (clients[data.username]){
io.sockets.connected[clients[data.username].socket].emit("add- message", data);
} else {
console.log("User does not exist: " + data.username);
}
});
//Removing the socket on disconnect
socket.on('disconnect', function() {
for(var name in clients) {
if(clients[name].socket === socket.id) {
delete clients[name];
break;
}
}
});
});
Client Код:
var socket = io;
socket.connect('x.x.x.x:3000');
var viewingUser = $('#viewingUserID').val();
socket.on("news", function (data) {
console.log(data);
});
socket.emit("add-user", {"username" : viewingUser });
So I replaced "<script type="text/javascript" src="xx.xxx.xxx.xxx:3000/socket.io/socket.io.js">" with "<script type="text/javascript" src="https://cdn.socket.io/socket.io-1.3.5.js"></script>"
Это ошибка:
GET http://23.253.247.166:3000/socket.io/?EIO=3&transport=polling&t=1439565622045-29 net::ERR_CONNECTION_REFUSED
Так я заменил "<тип скрипта =" текст/JavaScript»SRC = "xx.xxx.xxx.xxx:3000/socket.io/socket.io.js"> "с" " –