【发布时间】:2016-03-16 11:32:22
【问题描述】:
我正在尝试在我的服务器上实现消息传递。这是 Ubuntu 14.04/Nginx
我已经安装了
1.nodejs
2.Redis
3.laravel
一切顺利
当我运行命令时
node -v
它给了我节点的版本
在我的控制器中,我的代码如下所示
public function sendMessage(){
$redis = LRedis::connection();
$redis->publish('message', 'Sending Message to Port');
return redirect('writemessage');
}
而我的server.js代码是这样的
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var redis = require('redis');
server.listen(8890);
io.on('connection', function (socket) {
console.log("new client connected");
var redisClient = redis.createClient();
redisClient.subscribe('message');
redisClient.on("message", function(channel, message) {
console.log("mew message in queue "+ message + "channel");
socket.emit(channel, message);
});
socket.on('disconnect', function() {
redisClient.quit();
});
});
Redis 服务器在默认 6379 上运行
为了收听广播,我的 socket.php 文件有以下代码
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="https://cdn.socket.io/socket.io-1.3.4.js"></script>
<script>
var socket = io.connect('http://localhost:8890');
socket.on('message', function (data) {
$( "#messages" ).append( "<p>"+data+"</p>" );
});
</script>
一切正常,但我在 socket.php 页面上没有看到任何消息
任何想法如何调试这个
在本地主机上也可以正常工作
更新
原来如此
redis-cli monitor
并尝试再次执行我的代码,我可以看到 redis 正在广播这样的消息
1458128671.226586 [0 127.0.0.1:59112] "SELECT" "0"
1458128671.232152 [0 127.0.0.1:59112] "PUBLISH" "message" "Sending Message to Port"
但是在节点端我没有收到它
请!!帮帮我
【问题讨论】:
-
您的节点服务器是否在生产环境(数字海洋)上成功运行??
-
@Drudge 我运行没有任何错误,我也做了
redis-cli monitor我可以看到我的消息像这样发布1458128671.226586 [0 127.0.0.1:59112] "SELECT" "0" 1458128671.232152 [0 127.0.0.1:59112] "PUBLISH" "message" "Sending Message to Port" But node is not receiving it -
你尝试访问 url:with port 吗?
-
在我的猜测中,节点服务器没有运行。
-
Drudge 这是网址,
http://dev.iclock.in/writemessage,您可以在http://dev.iclock.in/socket上收听,在我的代码中,我删除了输入值并对消息字符串进行了硬编码,
标签: php node.js nginx socket.io laravel-5.1