Не удается подключиться и получить ошибку "unhandled socket.io url" с помощью MAMP + Socket.io (node.js)
Я разрабатываю приложение с использованием CodeIgniter на сервере MAMP (для разработки, в реальном времени оно будет на LAMP). Я пытаюсь добавить функциональность socket.io в реальном времени для сервера чата, но у меня возникли некоторые проблемы. У меня есть socket.io и MAMP, работающие независимо, но я не могу заставить моего клиента общаться с моим сервером.
server.js:
// Get the Socket.io module
var io = require('socket.io');
console.log ( 'Chat Server started' );
// Create a Socket.IO instance, listen on 8084
var socket = io.listen(8084);
// Add a connect listener
socket.on('connection', function(client){
console.log ( "Server Connected" );
});
Мой клиентский скрипт (socket.io.js загружается нормально, и моя консоль говорит "отладка: подается статический контент" всякий раз, когда я загружаю страницу):
<script src="http://localhost:8084/socket.io/socket.io.js"></script>
<script type="text/javascript">
// Create SocketIO instance, connect
var socket = new io.Socket('localhost',{
port: 8084
});
socket.connect();
socket.on ( 'connect', function () { console.log ( 'Client connected' ); } );
</script>
После запуска файла node.js, я получаю это в моей консоли:
Chat Server started
info - socket.io started
После загрузки клиента (перенаправив мой браузер на http://localhost:8888/ - порт по умолчанию для MAMP), я не получаю никаких консольных сообщений, но вместо этого получаю постоянный поток (примерно каждую секунду):
info - unhandled socket.io url
Похоже, это не соединяется вообще. Также нет ошибок в моей консоли ошибок JS в браузере. Есть идеи?
1 ответ
Запустив socket.io версии 0.8.5, я наконец заработал, используя следующий код:
server.js
var sys = require('sys'),
express = require('express'),
app = express.createServer('localhost'),
io = require('socket.io');
app.use(express.static(__dirname + '/public'));
app.get('/', function (req, res) {
res.send('Hello World');
});
app.listen(3000);
var server = io.listen(app);
server.sockets.on('connection', function (client){
// new client is here!
client.send ( 'Now connected!' );
client.on('message', function () {
}) ;
client.on('disconnect', function () {
});
});
клиентский скрипт:
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script src="/assets/js/jquery-1.6.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var socket = io.connect('http://localhost:3000'),
text = $('#text');
socket.on('connect', function () {
text.html('connected');
socket.on('message', function (msg) {
text.html(msg);
});
});
socket.on('disconnect', function () {
text.html('disconnected');
});
});
</script>
После запуска и перехода на мою страницу я вижу: "Теперь на связи!" почти сразу же. Я также показываю свою страницу через CodeIgniter на MAMP - все работает!