gpt4 book ai didi

apache - 在 apache Web 服务器上使用 Node.js socket.io 推送通知

转载 作者:太空宇宙 更新时间:2023-11-03 22:55:47 25 4
gpt4 key购买 nike

我试图了解所有推送通知的工作原理。我尝试对推送技术进行一些测试,但到目前为止我失败了。

基本假设是:
1)使用 Apache Web 服务器作为主要应用程序 Web 服务器(强制,因为我们所有的代码都使用它)
2)node.js技术中的跨浏览器推送通知服务器(由于是跨浏览器,所以提供了socket.io)。

到目前为止我失败了,这是我的代码(p1.html):

<!doctype html>
<html>
<head>

<meta charset="UTF-8">
<title>P1</title>
</head>
<body>

<h1>P1</h1>
<section id="content"></section>
<script src="/socket.io.js"></script> <!--socket.io-->
<script src="/socket.js"></script> <!--socket.io-client-->
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script>

var socket = io.connect('http://localhost:8080');

socket.on('notification', function (data) {
$('#content').append(data.message + '<br>')

});

</script>

</body>

</html>

和我的服务器脚本(p1.js):

var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, url = require('url')
app.listen(8080);

console.log("creating a connection");
io.sockets.on( 'connection', function ( socket ) {

console.log("runing time");
sendTimeMessage(socket);
});

function sendTimeMessage(socket){

console.log("in time");
var time= new Date().getTime();
console.log(time);
socket.volatile.emit( 'notification' , time );
setTimeout(sendTimeMessage, 5000);
}

function handler (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end("");
}

function sendMessage(message) {

io.sockets.emit('notification', {'message': message});
}

  • 我将示例中的 IP 更改为本地主机,因此我希望语法上没有错误。
  • 当我运行时,Apache Web 服务器是显示数据的服务器,其想法是让套接字 io 更新一些字段。

当前状态:
1.如果我不添加socket.io-client js文件,我会收到socket.io-client的引用错误
2.如果我添加了socket.io-client,我会得到“ReferenceError:require未定义”[中断此错误] 'undefined' != typeof io ? io:模块.导出

我真的需要帮助来理解它并使其发挥作用。我也对替代解决方案持开放态度我真的需要帮助才能完成这件事。

最佳答案

您想要实现的目标的工作示例。第一个错误是客户端的 javascript 路径错误,正确的路径是/socket.io/socket.io.js。第二个错误是使用了不存在的socket.volatile。

var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, url = require('url')


console.log("creating a connection");

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);
}

function handler (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end("<html><script src=\"/socket.io/socket.io.js\"></script> <!--socket.io--><script>io.connect().on('notification', function (data) {console.log(data)});</script></html>");
}

app.listen(8080);

关于apache - 在 apache Web 服务器上使用 Node.js socket.io 推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14256330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com