帮助我想要测试套接字的每个人,当我连接时应该出现一个警报,它可以在安装了Node js的计算机上运行,但不能在另一台计算机上运行。
错误:
无法加载资源:net :: ERR_CONNECTION_REFUSED http://xxx.xxx.xxx.xxx:8080/socket.io/socket.io.js未被捕 ReferenceError:未定义io
代码: 服务器:
var http = require('http');
var fs = require('fs');
var io = require('socket.io');
var server = http.createServer(function(req,res){
res.writeHead(200,{'Content-Type' : 'text/html'});
fs.readFile('./index.html',function(err,content){
res.end(content);
});
}).listen(8080);
io = io.listen(server)
io.sockets.on('connection',function(client){
client.emit('connecte');
});
客户:
<html>
<meta charset='utf-8'/>
<head>
<title>my first page</title>
<script src="http://localhost:8080/socket.io/socket.io.js" ></script>
</head>
<body>
<h1>It work</h1>
</body>
<script>
var socket;
socket = io.connect('http://localhost:8080');
socket.on('connecte', function(){
alert('You are connected');
});
</script>
</html>
对不起语言英语不是我尝试学习的第一语言。 感谢
答案 0 :(得分:1)
Socket.IO docs显示了如何将Socket.IO与内置的http服务器一起使用。比较该示例和您的代码,您可以看到您没有正确使用io
。尝试这样的事情:
var http = require('http');
var fs = require('fs');
var io = require('socket.io');
var server = http.createServer(function(req, res){
res.writeHead(200, {'Content-Type': 'text/html'});
fs.readFile('./index.html', function(err, content) {
res.end(content);
});
});
io = io(server);
server.listen(8080);
io.on('connection', function(client) {
client.emit('connected');
});
另外,在一个不相关的说明中,您可以将pipe()
html文件发送到客户端,而不是先缓冲整个文件:
res.writeHead(200, {'Content-Type': 'text/html'});
fs.createReadStream('index.html').pipe(res);