使用NodeJS的服务器端推送

穆罕默德·哈米斯(Mohamed Khamis)

我想使用NodeJS实现服务器端推送功能。目前,我只需要一个服务器来侦听对特定URL的请求(例如http://localhost:8000/inputData?data=hello

发出此请求后,我希望所有查看的客户端client.html都运行alert(hello);我在服务器端执行的操作如下:

var app = require('http').createServer(handler),
  io = require('socket.io').listen(app),
  parser = new require('xml2json'),
  fs = require('fs'),
  url = require('url');



var qs = require('querystring');

app.listen(8000);
console.log('server listening on localhost:8000');

function handler(req, res) {
  var url_parts = url.parse(req.url, true);
  var pathname = url_parts.pathname;
  switch(pathname){
      case '/inputData':
        var data = url_parts.query.data;
        socket.emit('notifyData', data); //socket is undefined
        break;
      default:
        fs.readFile(__dirname + '/client.html', function(err, data) {
          if (err) {
            console.log(err);
            res.writeHead(500);
            return res.end('Error loading client.html');
          }
          res.writeHead(200);
          res.end(data);
        });
  }

  ;
}

在客户端,在client.html

<script>
    var socket = io.connect('http://localhost:8000');

    socket.on('notifyData', function (data) {
        alert(data);
    });
</script>

我收到一条错误消息,说socket未定义。我知道我应该更早地定义它,但是我不确定该怎么做。

这是解决此类问题的正确方法吗?还是应该emit在其他文件中inputData.html我宁愿补充已经拥有的代码,因为我可能需要在之前进行一系列操作var data= url_parts.query.data

jfriend00

您的服务器上存在设计问题,因为socket根本没有定义变量。如果您要执行的操作是在任何人点击该特定URL时向所有客户端广播,则可以使用以下方法做到这一点:

 io.sockets.emit('notifyData', data);

如果您尝试向单个客户端套接字发出消息,那么您将必须找到一种方法来弄清楚io.sockets您要发送到名称空间中的哪个套接字

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用nodejs在服务器端生成图表?

Android通过Firebase推送通知(服务器端)

服务器端APN在代理后面推送通知

grpc服务器端推送的机制是什么?

在服务器端使用容器

客户端服务器端模板nodejs

使用 PHP 服务器端在 IONIC 2 上推送通知

如何使用客户端JavaScript调用服务器端NodeJS函数

无法在服务器端NodeJS上启用CORS

NodeJs在服务器端处理请求

NodeJS中requestAnimationFrame()的服务器端实现

Nodejs Handlebars如何运行服务器端JavaScript

使用Material UI 1和Nodejs / React进行服务器端渲染

不使用前端 Nodejs 调用服务器端路由的最佳方法

像NodeJS这样的服务器端JavaScript中的“服务器”是什么?

Android:使用Parse时使用服务器端

使用从客户端收到的Google授权代码获取服务器端javascript(nodejs)上的访问令牌

编写与客户端javascript和服务器端NodeJs模块一起使用的javascript代码

如何使用 Ajax 将 JSON 从服务器端(nodejs)发送到客户端?

使用nodejs + express处理服务器端和客户端错误的最佳方法是什么

Microsoft Edge 服务器端的浏览器推送通知

使用Angular Material处理服务器端错误

在服务器端使用NTLM检查URL

在服务器端使用Node JS解析HTML

数据表服务器端-使用HTML

使用viperHTML进行服务器端渲染

如何使用MySQL管理服务器端进程

使用异步数据获取的服务器端渲染

如何在服务器端使用JSON Sanitizer?