您好我已经使用nodejs和socket.io开发了一个小应用程序,以便我可以利用socket.io的推送机制。
它在Firefox,Chrome和Safari上的功能就像魅力一样,但无法在IE8上运行。
我收到此错误
[WebSocket] cannot connect to Web Socket server at ws://socketio-example.nodester.com:80/socket.io/1/flashsocket/1574670559846521853 (SecurityError) make sure the server is running and Flash socket policy file is correctly placed
经过大量的谷歌搜索,我得到了在socket.io上设置传输的信息,我只限于
io.set('transports', [
'jsonp-polling'
]);
在此之后我没有看到错误但内容正在加载。
如果我想真正设置Falsh政策文件的确切内容和我应该放在哪里。
长期以来苦苦挣扎,现在需要一些建议。
这是我的服务器端代码供参考
var app = require('express')
//var httpapp = require('http')
, fs = require('fs')
//http = require('http').createServer(httpapp)
, server = require('http').createServer(handler)
, io = require('socket.io').listen(server)
, firstTime;
//httpapp.get('*',function(req,res){
// res.redirect('https://itcomm-dev.vmware.com:8080'+req.url)
//})
io.set('flash policy port', 10483)
io.set('transports', [
// 'websocket'
//, 'flashsocket'
// , 'htmlfile'
// , 'xhr-polling'
'jsonp-polling'
]);
//io.set('flash policy port', -1)
io.set("polling duration", 60)
server.listen(8083);
// on server started we can load our client.html page
function handler(req, res) {
fs.readFile(__dirname + '/../index.html', function(err, data) {
if (err) {
//console.log(err);
res.writeHead(500);
return res.end('Error loading client.html');
}
res.writeHead(200, {'Access-Control-Allow-Origin': '*','Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE',
'Access-Control-Allow-Headers': 'X-Requested-With, Accept, Origin, Referer, User-Agent, Content-Type, Authorization'});
res.end(data);
});
}
io.sockets.on('connection', function(socket) {
//console.log(__dirname);
fs.readFile(__dirname + '/../scripts/notifications.json', 'utf-8', function(err, data){
if(err) throw err;
socket.volatile.emit('notification', data);
})
try{
fs.watch(__dirname + '/../scripts/notifications.json', function(curr, prev) {
// on file change we can read the new xml
fs.readFile(__dirname + '/../scripts/notifications.json','utf8', function(err, data) {
if (err) throw err;
// send the new data to the client
socket.volatile.emit('notification', data);
});
});
}
catch(err){
throw err;
}
});