Socket.io 400 (Bad Request)

本文档描述了在使用Socket.io时遇到的400 (Bad Request)错误,通过分析服务器端和客户端代码,指出问题可能源于socket.io.js版本过低。更新客户端的socket.io.js库至1.0.6版本即可解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的服务器端:
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>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值