套接字io关闭后如何停止我的网页渲染

时间:2016-02-09 09:06:01

标签: node.js socket.io

我有一个带有Socket Io集成的NodeJS应用程序。现在我的网页和应用程序都已实现,但我在执行期间面临一个问题:

以下是我的网页代码:

<script>
$(document).ready(function(){
$("#batch")[0].reset();
var socket  = io.connect('http://xx.xx.xxx.xx:xxxx',{'forceNew':true });
socket.on('message', function (data) {
        var newtext = data;
        document.batch.outputtext.value += newtext;
});
socket.on('end', function (data) {
        socket.disconnect();
});
});
</script>

我的NodeJS App:

exec_script = function(resp) {
      socket.on('connection', function (client) {
      console.log('Connection Established');
      client.on('disconnect', function () {
          console.log('disconnected');
          return;
      });
   var pyshell = new PythonShell('./test.py', options ={ mode: 'text', pythonOptions: ['-u'] });
   pyshell.stdout.on('data', function(data) {
    client.emit('message', data);
    console.log(data);
  });
  pyshell.end(function(err) {
    if (err) throw err;
    console.log('End Script');
    client.emit('end', 'end');
    client.disconnect();
});
});
};

我面临的问题是,当Python脚本执行时,其输出会发送到浏览器,而我的浏览器状态为&#34;等待xx.xx.xxx.xx&#34;在我的FF中,我看到蓝色圆圈盘旋 - 这很好 - 但即使在Python脚本结束并且套接字明确断开之后,我仍然看到浏览器状态为&#34;等待xx.xx.xxx.xx浏览器标题为连接蓝色圆圈旋转?

我如何成功关闭和结束连接,因为我在浏览器中需要相同的页面,而我不会将用户导航到其他页面?

我尝试使用 response.end(),但我面临的问题是,如果请求数据是以 /今天的形式发布,那么调用 response.end()将浏览器端的网址更改为 http://xx.xx.xxx.xx:xxxx/today ,从而导致出现空白/错误页面,这是我不想要的情况 - 网址应该是保持为 http://xx.xx.xxx.xx:xxxx

以下是我调用exec_script方法的方法:

router.post('/', function(req, res) {
   methods.process(req, res);
});

exports.process = function(req, resp) {
    var bname = req.body['date'];
   if(typeof req.body['date'] !== "undefined" && req.body['date'] !== null)
   {
     exec_script(req, resp);
   }
};

0 个答案:

没有答案