首页 > 代码库 > socket.io对IE8的支持

socket.io对IE8的支持

默认下载了最新版的socket.io,版本号是1.7.2,对IE8的支持不好,反正在IE8下收发消息都不行。在网上查了很多资料,都解决不了IE8的问题,崩溃。

 

最后用了一个大家比较认可的版本1.0.6,可以支持IE8:

卸载socket.io

npm uninstall socket.io

安装1.0.6版本的socket.io

npm install socket.io@1.0.6

 

后面的一些版本没有一一的去试,下了一个1.3.7版本的,还是可以支持收发消息的,只是发现IE8在关闭窗口时,无法实时触发disconnect事件。

坑不只一个,除了socket.io的版本外,客户端代码,还需要在页面头部使用

<!DOCTYPE html>

才可以支持IE8。

 

下面是完整示例代码

服务端 app.js

var app = require(‘http‘).createServer(handler);var io = require(‘socket.io‘)(app);var fs = require(‘fs‘);var url = require("url");app.listen(80);function handler (req, res) {  var pathname = url.parse(req.url).pathname;  if(pathname == "/") {    pathname = "/index.html";  }  fs.readFile(__dirname + pathname, ‘utf-8‘,  function (err, data) {    if (err) {      res.writeHead(500);      return res.end(‘Error loading ‘ + pathname);    }    res.writeHead(200,{‘Content-Type‘:‘text/html;charset=utf-8‘});    res.end(data);  });}io.on(‘connection‘, function (socket) {  console.log("Send message using: "+socket.conn.transport.name);                                                              socket.on(‘message‘, function (data) {    console.log(data);    socket.broadcast.emit(‘cast‘, data);  });  socket.on(‘disconnect‘, function (data) {    console.log(‘disconnect:‘ + data);  });});

 

客户端代码 index.html

<!DOCTYPE html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>demo</title></head><body><script src="/socket.io/socket.io.js"></script><script src="jquery-1.11.3.min.js"></script><script>  var socket = io.connect();     socket.on(connect, function () {        socket.on(cast, function (data) {          $("#content").append("<br />" + data);          });   });function send() {    socket.emit(message, $("#msg").val());}</script><div id="content"></div><input type="text" name="msg" id="msg" /><input type="button" name="Button" value="Button" onClick="send()"></body></html>

 

socket.io对IE8的支持