Я создаю приложение pub-sub, используя node.js, redis, socket.io.Почему мой код печатает нелогичные шаблоны каждый раз, когда я запускаю приложение node.js?
Для стороны моего сервера это код, у меня есть для app.js:
var express = require('express');
var app = express();
var redis = require('redis');
var http = require('http').Server(app);
var io = require('socket.io')(http);
var fs = require('fs');
app.use(express.static(__dirname + '/public'));
var port = process.env.PORT || 8000;
var sub = redis.createClient();
var pub = redis.createClient();
io.on('connection', function(socket){
socket.on('subscribe', function(channel){
sub.subscribe(channel);
console.log("Successfully subscribed");
});
socket.on('publish', function(msg, channel){
pub.publish(channel, msg);
if(pub.publish(channel, msg)){
socket.emit('message', msg);
}
else{
socket.emit('message', "The channel doesn't exist!");
}
})
})
http.listen(port, function(){
console.log('listening on port ' + port);
});
для index.js на переднем конце, я использую JQuery для извлечения HTML элементов и использовать Socket.io для связи с сервером:
$(function(){
$("#sub-btn").click(function(){
var socket = new io.connect('http://localhost');
var channelName = $("#channel").val();
var content = $('#content');
socket.emit('subscribe', channelName);
})
$("#pub-btn").click(function(){
var socket = new io.connect('http://localhost');
var msg = $("#published_message").val();
var channelName = $("#channel").val();
var content = $('#content');
socket.emit('publish', msg, channelName);
socket.on('message', function(msg){
content.append(msg);
})
})
})
Когда я запускаю мое приложение узла это то, что я получаю:
После того как я вставить некоторый вход в первый раз, скажем, к примеру:
После того как я вставить какой-то другой вход:
Я не могу сказать, почему эта ошибка является происходит.
Это пограничный ответ низкого качества. Я не буду голосовать, чтобы удалить, но было бы очень хорошо, если бы вы добавили еще больше контента в свой пост. – gunr2171
Спасибо за ваше упоминание. Я думал, что это достаточно ясно, но ты прав. –
@MohammadRahchamani это не проблема. даже если я попробую console.log (msg), он все еще делает это несколько раз – Ralph