我无法使用 Guillermo Rauch 在本地和 cloud9 平台上的一个非常基本的 socket.io 聊天示例(只是对它的初步测试)在我的机器上运行 socket.io。我已经尝试将 socket.io 与 express 2.5.x 和 express 3 结合使用(相应地更改服务器代码)并使用 Nodeclipse 和命令行运行获得相同的行为:
信息:socket.io 启动
了在端口 3000 上运行 @ localhost 的 Socket 服务器
当我访问时,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 和 express 的版本,通过从 nodeclipse 工作区文件夹 (c:/users/myname/workspace/nameoftheapp) 给出的 npm install 命令在本地安装(express 也全局安装)“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
我是否必须在连接中设置某些内容才能正确指向我的工作区?