Я написал простую программу, в которой есть потребитель nodejs, потребляющий данные из kafka, а затем передающий данные клиенту с помощью socket.io, чтобы я мог отображать данные с помощью d3.
Однако я продолжаю сталкиваться с этой ошибкой на стороне клиента, которая не может найти io.
Я пытался использовать cdn и другие альтернативы в своем index.html, однако это не привело к какому-либо прогрессу.
Потребитель.js
var options = {
fromOffset: 'latest'
};
var express = require('express');
var router = express.Router();
// Kafka-node initilizations.
var kafka = require('kafka-node'),
Consumer = kafka.Consumer,
client = new kafka.KafkaClient(),
consumer = new Consumer(
client,
[
{ topic: 'trial1', partition: 0 }
],
[
{
autoCommit: false
},
options =
{
fromOffset: 'latest'
}
]
);
consumer.on('message', function (message) {
router.get('/', function(req, res, next) {
res.render('index', {title: 'Test', condition: false});
});
console.info(message.value);
});
// Display error messages if any.
consumer.on('error', function (err)
{
console.info('ERROR' + err.toString());
});
Клиент.js
//init socket
var socket = io();
//on message call update
socket.on('message', function(message){
console.info(message)
});
index.html
<html>
<head>
<script src = "https://cdn.socket.io/socket.io-1.2.0.js"></script>
<script src = "https://code.jquery.com/jquery-1.11.1.js"></script>
</head>
<body>
<script>
var socket = io.connect();
</script>
<div>This is our socket.html file</div>
</body>
</html>
Ваша версия кажется немного устаревшей, а более старые версии Socket.IO имеют только серверную версию и клиентскую версию, которые раньше были разделены (socket.io-client.js раньше был отдельным пакетом).
Убедитесь, что вы используете правильную версию Socket.IO (вы можете получить от https://cdnjs.com/libraries/socket.io)
Вот так:
<script type = "text/javascript" src = "https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js"></script>
Также убедитесь, что вы используете этот формат:
<script>
var socket = io('my.ip'); // NOT io.connect();
... // Rest of code
</script>
Надеюсь, я был полезен!
Я поставил другое решение, пожалуйста, проверьте его!
Я попробовал ваш подход, у меня не сработало. Мне удалось решить проблему, это было со ссылкой src socket.io.js
Это то, что я написал в первом ответе :P
Извините, да, это было моей ошибкой. Это был действительно правильный ответ. Спасибо. Если вы отредактируете свой ответ, я отмечу его правильным.
Отредактировано! :D Большое спасибо
пожалуйста, добавьте журнал ошибок здесь.