为什么我的node.js / socket.io应用程序不能在iOS6上工作?

我认为socket.io的重点是不必担心现代浏览器? 大声笑

无论如何,我是新来的套接字编程。 我有一个简单的模仿鼠标移动的小应用程序。

您打开多个浏览器,当您移动鼠标时,您的操作将被logging在其他浏览器中。 它移动一个小方块。 挺酷的 但是,当我在iPad(iOS6)上打开它时,什么都没有! sockets没有连接。 我甚至把connect事件的警报消息,什么都没有。

IE,FF和Chrome在我的笔记本电脑上工作得很好。 唯一的区别是,我的开发机器使用localhost而iPad使用我的机器的IP。 但是,当我连接到笔记本电脑上的本地IP时,它仍然有效。 只是不在Safari / iPad。

这是我的服务器。

  var app = require('http').createServer(handler), io = require('socket.io').listen(app), fs = require('fs'); app.listen(80); function handler(req, res) { var file = __dirname + '/public/index.html'; fs.readFile(file, function(err, data) { if(err) { res.writeHead(500); return res.end('Error loading index.html'); } res.writeHead(200); res.end(data); } ); } var rooms = ['abc', 'test1']; var sockets = []; io.sockets.on('connection', function(socket) { sockets.push(socket); socket.on('m', function(data) { socket.broadcast.to(socket.room).emit('relay', {msg: 'MouseX: ' + data.x + ' MouseY: ' + data.y, x: data.x, y: data.y}); }); socket.on('join', function(room) { socket.join(room); socket.emit('updateStatus', {msg: 'Joined room ' + room}); console.log('Joined room ' + room); }); }); 

这是我的客户:

 <!doctype html> <html> <head> <style> body { padding: 40px; } #cursor { background:white; border:1px solid black; color: white; display: block; height:24px; padding:6px; position:absolute; width:24px; z-index:20; } </style> </head> <body> <input id='msg' type='text' size='100' /><br /> <input id='box' type='text' size='100' /> <div id='cursor'></div> <script src='/socket.io/lib/socket.io.js'></script> <script> var socket = io.connect('http://localhost'); var b = document.getElementById('box'); var m = document.getElementById('msg'); var c = document.getElementById('cursor'); // join custom room socket.on('connect', function() { socket.emit('join', 'abc'); }); // update status messages from server socket.on('updateStatus', function(data) { m.setAttribute('value', data.msg); }); socket.on('relay', function(data) { b.setAttribute('value', data.msg); c.style.left = parseInt(data.x) + 'px'; c.style.top = parseInt(data.y) + 'px'; }); document.onmousemove = function(event) { event = event || window.event; socket.emit('m', {x: event.clientX, y: event.clientY}); } </script> </body> </html> 

本地主机是本地的机器。 你的IP应该使用一个IP地址或域名:

像这样:io.connect('192.168.1.110'); 或者io.connect('test.myapp.com');

Interesting Posts