服务器到客户端的更新,无需来自客户端Websocket编程的恒定/持久请求



也许我没有完全理解相关问题的答案。我得到了长轮询、反向ajax的概念,但问题是:

我目前的设置是在我的本地单元,我是客户端,我是服务器。我可以成功地建立与服务器的连接,一旦建立连接,我就可以向我的客户端发回一条消息,现在出现了另一种情况,我只希望服务器在建立连接后不断更新我的客户端。为了简单起见,比如说我希望我的客户端能随服务器时间更新,所以每次分钟变化时,服务器都会向客户端发送最新的时间(前提是连接已经建立)。

我使用的是node.js和socket.io。以下是我的代码:

客户端:

<!DOCTYPE html>  
<meta charset="utf-8" />  
<title>WebSocket Testing</title>  
<script src="/socket.io/socket.io.js"></script>
<script language="javascript" type="text/javascript">  
var socket = new io.connect("http://127.0.0.1:8080");
socket.on('connect', function(){
//  socket.on('news', function (data) {
//  socket.emit('my other event', { my: 'data' });

        socket.on("test",function(data){
            alert(data);
        });

    socket.onmessage =  function (event) {
        console.log(event.data);
    }
});
console.log(socket);
</script>  
<h2>WebSocket Test</h2>  
<div id="output"></div>  
</html>

服务器:

var socketOptions = {
            transportOptions: {
                    'xhr-polling': {
                            closeTimeout: 20000000, //20 mins
                            timeout: 20000000  //20 mins
                    }
            }
    };
var app = require('http').createServer(handler)
  , url = require('url')
  , io = require('socket.io').listen(app,socketOptions)
  , fs = require('fs')
app.listen(8080);
function handler (req, res) {
    var path = url.parse(req.url).pathname;
  fs.readFile(__dirname + '/index.html',
  function (err, data) {
    if (err) {
    console.log("ERROR: "+err)
      res.writeHead(500);
      return res.end('Error loading index.html');
    }
  //  res.writeHead(200);
    //res.writeHead(200, {'Content-Type': path == 'json.js' ? 'text/javascript' : 'text/html'})
    res.writeHead(200, {'Content-Type': 'text/html'});
    console.log("THIS IS IT");
    res.end(data);
  });
}
console.log(io);
io.sockets.on('connection', function (socket) {
//  socket.send("testing lang kung nagsesend");
//  console.log("connection");
//  socket.emit('news', { hello: 'world' });
//  socket.on('my other event', function (data) {
//    console.log(data);
//  });

    socket.emit("test","Test connection message established,send and received");
});

我该如何处理我的服务器代码?我可以注意到,几乎所有的代码示例都是php格式的。

使用回调中的函数创建一个setInterval,该函数在connection被触发后的任何时间设置秒。你正在寻找这样的东西:

io.sockets.on('connection', function (socket) {
    setInterval(function(){
        // do a socket emit here to give data to client
    },1000);
}

相关内容

  • 没有找到相关文章

最新更新