【发布时间】:2011-10-16 00:38:17
【问题描述】:
我正在 MAMP 服务器上使用 CodeIgniter 开发一个应用程序(为了开发,它会在 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 错误控制台中没有错误。有什么想法吗?
【问题讨论】:
-
我会先尝试/捕获您的连接,看看是否有任何异常被抛出。
-
try { socket.connect() } catch (err) { alert ( err ); }没有警报。 -
您包含来自端口 3478 的 JavaScript,在端口 8084 上侦听 Socket.IO,并在 8888 上提供内容。其中之一是错误的吗?我觉得新版本的 Socket.IO 不需要
new io.Socket的配置选项——它是根据 JS 的包含方式来计算的。 -
我想一个更好的问题是,您使用的是哪个版本的 Socket.IO? :)
-
@brandon 是的,这只是一个错字,因为我试图排除故障。我尝试了许多不同的端口(确保它们都相同),但无济于事。至于版本:Socket.IO.js build:0.8.5, development
标签: codeigniter node.js mamp socket.io