我的服务器端:
var http=require("http");//加载http模块
var fs=require("fs");//加载用于文件读取的fs模块
var io = require('socket.io');//引入socket包
var documentRoot="D:/HTML5/websocket/www";//客户端访问文件的默认根目录
var httpServer=http.createServer(function(req,res){//当客户端通过http协议发送请求到该服务器时,就会触发这个回调函数
var url=req.url;//console.log(url);//输出的是文件的相对路径
var file=documentRoot + url;//console.log(file);//输出的是文件的绝对路径
fs.readFile(file,function(error,data){//读取文件,参数1为文件绝对路径,参数2是个回调函数(读取完文件就执行)
//error不为空时,表示读取时发生错误;为空时,表示读取成功-----<span style="font-family: Arial, Helvetica, sans-serif;">//data为读取到的文件内容</span>
if(error){//读取文件发生错误时的响应内容
res.writeHeader(404,{
'content-type':'text/html;charset="utf-8"'
});
res.write('<h1>404</h1><p>你要访问的页面不存在</p>');
res.end();
}else{//文件读取成功的响应内容
res.writeHeader(200,{
'content-type':'text/html;charset="utf-8"'
});
res.write(data);
res.end();
}
});
}).listen(8888);//调用http模块函数创建http协议的服务器
var socket = io.listen(httpServer);//升级http协议
socket.sockets.on('connection', function(socket) {//当客户端访问该服务器时,就会触发connect事件,然后执行回调函数
//socket对象保存着客户端与服务器端一个连接的信息,每个socket链接都有一个独立的socket对象
console.log('有人通过socket连接进来了');
//socket.emit('hello', '欢迎');
});
我的客户端:
</pre><pre>
</pre><pre name="code" class="javascript"><pre name="code" class="javascript"><script src="public/javascripts/socket.io.js"></script>
<script>
var btn = document.getElementById('btn');
var socket = null;
btn.onclick = function() {
socket = io.connect('http://localhost:8888');//io是socket.io.js文件中定义的对象
socket.on('hello', function(data) {
alert(data);
//this.emit('hellotoo', '欢迎欢迎');
}); </script>
访问报错:
http://127.0.0.1:8888/socket.io/1/?t=1404410309733 400 (Bad Request)
解决办法:应该是
socket.io.js版本太低,客户端改成
<script src="https://cdn.socket.io/socket.io-1.0.6.js"></script>
便可以正常工作了
</pre><pre>