将数据发布到nodejs服务器到客户端
Emit data POSTED to nodejs server to client
我有以下nodejs服务器代码
http = require('http');
fs = require('fs');
url = require('url');
server = http.createServer( function(req, res) {
console.dir(req.param);
if (req.method == 'POST') {
console.log("POST");
// I WANT TO EMIT THIS DATA TO CLIENT
}
else
{
console.log("GET");
}
});
//THIS IS A WORKING EXAMPLE WHICH I FOUND ONLINE TIED TOGETHER
io = require('/usr/local/lib/node_modules/socket.io').listen(server);
io.sockets.on( 'connection', function ( socket ) {
console.log("runing time");
sendTimeMessage(socket);
});
function sendTimeMessage(socket){
console.log("in time");
var now= new Date().getTime();
socket.emit('notification', {'message': now});
setTimeout(function() {
socket.emit('notification', {'message': "after 5s"});
},5000);
}
port = 8000;
host = '127.0.0.1';
server.listen(port, host);
console.log('Listening at http://' + host + ':' + port);
客户端
<!doctype html>
<html>
<head>
<script src="http://127.0.0.1:8000/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost:8000');
socket.on('notification', function (data) {
console.log(data);
});
</script>
</head>
<body>
<ul id='messages'></ul>
</body>
</html>
请原谅这个例子。我想要实现的是,当我的nodejs服务器上发生帖子时,我想将其发送到前端。我是nodejs和socket的新手,但我知道javascript是如何工作的。
有没有一种方法可以把socketio发射放在POST中?
如果要向使用套接字的服务器发送数据,请通过套接字发送数据,而不是通过post请求。或者,如果你必须使用post,你可以通过res.send("数据在这里")将其发送回客户端;
如果这两种选择都不适合你,那么也许你可以在两者之间设置一些。例如,将post请求中的数据记录到数据库中,并有一个脚本来轮询数据库中的更改,然后通过套接字推送这些更改。这是黑客,绝对不是推荐的方法。
编辑:另一种方法可能是创建一个全局变量(当然),即一个以某种ID为键的套接字列表。然后将该ID与post请求一起发送,从全局变量中获取套接字并从中发送数据。例如:
var sockets = {};
var server = http.createServer( function(req, res) {
if (req.method == 'POST') {
// You will need to pass the socket ID from the client
sockets[request.data.id].emit('Some data');
}
});
var io = require('/usr/local/lib/node_modules/socket.io').listen(server);
io.sockets.on( 'connection', function ( socket ) {
sockets[socket.id] = socket;
});
这是未经测试的,不能保证没有安全缺陷
相关文章:
- Nodejs和express路由,如何处理客户端的承诺
- 将数据发布到nodejs服务器到客户端
- nodejs/ccurlhttp请求与postlerrest客户端相比速度较慢
- 客户端HTML MVC渲染与服务器端通过NodeJS进行重定
- ibmbluemix-nodejs和websockets在客户端不断关闭
- nodejs中的socket.io客户端
- 使用NodeJS与客户端共享变量
- 需要将数据从NodeJS服务器发送回JQuery客户端
- Nodejs-websocket:如何在没有服务器响应的情况下连续发送客户端消息
- nodejs无法仅为移动客户端提供服务
- 加载页面nodejs时,将数据从服务器发送到客户端
- Nodejs - 让客户端套接字在 5 秒超时后重试
- Nodejs,Express - 尝试从请求对象获取客户端 IP - 显示 127.0.0.1
- 客户端和服务器位于同一 NodeJS 进程中
- Nodejs,客户端并不总是接收服务器消息
- 将数据从 Java 客户端发送到 NodeJS 服务器
- Java客户端卡在来自nodejs服务器的数据数据流中
- 如何使用谷歌api nodejs客户端为nodejs在gmailapi中发送带有附件的邮件
- 套接字.io(与NodeJS) -客户端没有得到断开事件
- Kafka, nodejs客户端(kafkaesque) socket默认超时