版本:0.8.7-3
安装,默认把它解压缩到node_modules下有很大机率运行不了,因为它还需要其它的一些库的支撑。我陆续下了socket.io-client,uglify-js,connect三个项目,全都放在node_modules,运行成功。如果想知道自己的机器少什么样的库,可以用chrom打开开发者工具,或者直接看CMD里的提示。
安装成功后,在项目运行过程中,又同时遇到了几个问题。
1、浏览器提示:
warn - unknown transport: "undefined"
info - unhandled socket.io url
这个问题是由于引用的socket.io.js文件版本不对造成的,如下这个文件已过期,与最新版本不配对
<script type="text/javascript" src="/socket.io/socket.io.js" />
解决办法:
在JS服务端文件中,需要创建一个服务端的响应程序,如下
var sys = require('sys'),
express = require('express'),
app = express.createServer('localhost'),
io = require('socket.io');
app.listen(3000);
var server = io.listen(app);
src="/socket.io/socket.io.js"中的这个socket.io.js文件你在本地机器上是找不到的,需要使用服务端生成的这个js文件
<script src="http://localhost:3000/socket.io/socket.io.js />
下面,附上一个我机器上测试通过的简单例子:
客户端:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta charset="UTF-8">
<head>
<script src="http://localhost:3000/socket.io/socket.io.js%22%3E%3C/script>
<script type="text/javascript">
// 创建Socket.IO实例,建立连接
var socket = io.connect('http://localhost:3000');socket.on('connect', function () {
alert('connected');
socket.on('message', function (msg) {
alert(msg+"message");
});
});socket.on('disconnect', function () {
alert('disconnected');
});
function sendMessageToServer(msg)
{
socket.send(msg);
}
</script>
</head><body>
<div id="chat-box" style="bordddder:1px solid #cccccc; width:400px; height:400px; overflow:scroll;"></div>
昵称:<input type="text" id="nike"/><br/>
内容:<input type="text" id="talk"/><input type="button" id="send" onClick="sendMessageToServer('111');" value="发送"/>
</body>
</html>
服务端:
var sys = require('sys'),
express = require('express'),
app = express.createServer('localhost'),
io = require('socket.io');
app.listen(3000);var server = io.listen(app);
server.sockets.on('connection', function (client){
// new client is here!
client.send ( 'Now connected!' );
console.log("loged");
client.on('message', function (msg) {
console.log(msg);
}) ;client.on('disconnect', function () {
});
});