Я не могу заставить socket.io работать на моей машине с одним из самых простых примеров чата socket.io (просто предварительный тест) Гильермо Рауха локально и на платформе cloud9. Я пробовал socket.io в сочетании с Express 2.5.x и Express 3 (соответственно изменив код сервера) и получил то же поведение, используя как Nodeclipse, так и запуск командной строки:
информация: socket.io запущен
Сервер сокетов работает @ localhost на порту 3000
Когда я посещаю localhost:3000
, я получаю:
отладка: обслуживается статический контент /socket.io
Нет рукопожатия и, возможно, клиент не подключается.
Возможно, проблему легко увидеть, но я не нашел ответа, подходящего для моего случая ни здесь, ни где-либо еще. Вот моя среда:
Windows 7 x86 или Windows 8 64-разрядная; Nodeclipse на последнем стабильном узле (0.10.15, если не ошибаюсь); использовано: google chrome, firefox, IE последней версии;
пытался также обслуживать индексную страницу через сервер WAMP;
перепробовал много альтернатив, которые, кажется, предполагают, что это не проблема кода, а принадлежность к чему-то другому (экспресс не работает с последними установками узла? что-то не так с переменными среды?);
Express, кажется, обслуживает файл /socket.io/socket.io.js, поскольку он доступен для чтения через любой браузер, когда я ввожу localhost:3000/socket.io/socket.io.js (я не знаю, правильно ли это тестовое задание).
Вот код клиента:
<!doctype html>
<html>
<head>
<title>my test</title>
<script src="/socket.io/socket.io.js"></script>
<script src="chat.js">
<link href="/stylesheets/style.css" rel="stylesheet" />
</head>
<body>
<div id="chat">
<ul id="messages"></ul>
<form id="form">
<input type="text" id="input" />
<button>Send</button>
</form>
</div>
</body>
</html>
Вот серверное приложение:
var express = require('express');
var sio = require('socket.io');
var app = express.createServer(
express.bodyParser(),
express.static('public'));
app.listen(3000);
var io = sio.listen(app);
console.log('Socket server running @ localhost on port ' + 3000);
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log('hello');
});
});
chat.js содержит:
window.onload = function() {
var socket = io.connect("http://localhost:3000");
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
};
это версии socket.io и экспресс, установленные локально (экспресс также устанавливается глобально) с помощью команды установки npm, заданной из папки рабочей области nodeclipse (c:/users/myname/workspace/nameoftheapp) "express": "2.5.4 ", "socket.io": "0.9.16"
Структура проекта
node_modules
|- [...] (all the installed folders and files]
public
|- stylesheets
--|-style.css
|- index.html
app.js
package.json
readme.md
Должен ли я установить что-то в соединении, чтобы правильно указать на мою рабочую область?