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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM