我正在使用HTML5的Server Sent Events将更新推送到我的在线客户端.Firefox和Chrome上的一切都运行良好,但Safari随时都有加载轮.也许是因为他将SSE视为页面中加载的内容.
我怎么能对Safari说SSE不是加载的东西而是简单的更新脚本,所以用户在页面真正加载后不会看到加载轮?
这是客户端正在查看的实时更新的html页面:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>SSE Tester</title>
</head>
<body>
<h1>SSE Output</h1>
<div id="result"></div>
<h1>Debug Console</h1>
<div id="status"></div>
<script>
//SSE si compatible
if(typeof(EventSource)!=="undefined")
{
var i = 1;
var source=new EventSource("demo_sse.php");
//Lorsque le serveur envoie un message
source.onmessage=function(event)
{
//Validation de l'origine du serveur
if (event.origin != 'https://secure.mydomain.com')
{
document.getElementById("status").innerHTML+= "<br><b>Oups! Looks like something went wrong!\n\nPlease contact webmaster@mydomain.com with the following error :</b><p><pre> The Origin of the EventSource wasn\'t coming from our secure server!</pre>";
return;
} …Run Code Online (Sandbox Code Playgroud) 我不确定如何理解socket.io中消息的用法.我正在尝试从客户端向服务器发送消息,然后服务器回复客户端(基本不是吗?).
这是服务器代码:
var fs = require('fs');
var hskey = fs.readFileSync('ssl.key');
var hscert = fs.readFileSync('ssl.crt');
var options = {
key: hskey,
cert: hscert
};
var app = require('https').createServer(options);
var io = require('/usr/local/lib/node_modules/socket.io').listen(app);
app.listen(8181);
io.sockets.on('connection', function (socket) {
socket.emit('serverMessage', 'Hello world!');
io.sockets.emit('serverMessage', 'A user connected');
io.sockets.on('clientMessage', function (socket) {
socket.emit('serverMessage', 'Gotamessage bitch!');
console.log('I received a message by ', from, ' saying ', msg);
});
socket.on('disconnect', function () {
io.sockets.emit('serverMessage', 'A user disconnected');
});
});
Run Code Online (Sandbox Code Playgroud)
这是客户端代码:
<script>
var socket;
var firstconnect = true; …Run Code Online (Sandbox Code Playgroud)