私はプログラムからメッセージを受け取るアプリケーションを持っています。このアプリケーションはメッセージを受信し、接続されたクライアントにメッセージをブロードキャストします。今、私はコンソールとコンソール上にメッセージを表示していますが、この受信機アプリケーションは完全に受信しています。しかし、クライアント(htmlページ)では、ブロードキャストされていません。 localhost/resultを開くと何も表示されません。何が間違っているのですか?node.js socket.ioは接続されたクライアントにブロードキャストしていません
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var EventHubClient = require('azure-event-hubs').Client;
var connectionString = 'connection string';
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())
var printError = function (err) {
console.log(err.message);
};
var result;
var printMessage = function (message) {
console.log('Message received: ');
result = JSON.stringify(message.body);
obj = JSON.parse(result);
console.log('message:' + result)
console.log('');
};
count =0;
app.get('/result', function(req, res){
res.sendFile(__dirname + '/result.html');
});
io.on('connection', function(socket){
console.log('user connected');
socket.on('chat message', function(msg){
io.emit('chat message', result);
console.log("This is id in the sock' section" + check_id);
});
socket.on('disconnect', function(){
console.log('user disconnected');
socket.removeAllListeners('disconnect');
io.removeAllListeners('connection');
});
});
var client = EventHubClient.fromConnectionString(connectionString);
client.open()
.then(client.getPartitionIds.bind(client))
.then(function (partitionIds) {
return partitionIds.map(function (partitionId) {
return client.createReceiver('$Default', partitionId, { 'startAfterTime' : Date.now()}).then(function(receiver) {
console.log('Created partition receiver: ' + partitionId)
receiver.on('errorReceived', printError);
receiver.on('message', printMessage);
});
});
})
.catch(printError);
http.listen(3000, function(){
console.log('listening on *:3000');
});
私が直接printMessage
機能から、それを送信しresult.html
<html>
<head><title>Hello world</title></head>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
// socket.emit('chat message')
socket.on('chat message',function(msg){
socket.emit('chat message',msg);
document.write('hello world');
document.write(msg);
});
</script>
</html>
再製作した例を試しましたか? – EMX
それはうまく動作します。なぜボタンがクリックされても、ドキュメントの読み込みではなく、放射がトリガーされたときに、それがうまくいけばいいのか理解できないのですか? – Neo
onloadを使用するには、最初にソケットをサーバーに接続し、クライアントソケットイベントハンドラを設定する必要があります。次に、接続中のクライアントの内部でソケットが接続されていることを知っているので、そのイベントの内部で発光を開始できます。 – EMX