Beim Versuch, einen einfachen NodeJS-Server und einen Socket.io-Client einzurichten, um etwas mit WebSockets zu testen, bin ich auf etwas Dummes gestoßen. Ich bin mir ziemlich sicher, dass es etwas Dummes ist Ich habe getan, weil ich mit NodeJS/Socket.io vorher gearbeitet habe und dieses Problem nie hatte.NodeJS/Socket.io empfängt kein Ereignis vom Client
Mit dem Code unten, ich bin in der Lage, das "Tick" -Ereignis vom Server auf dem Client zu empfangen, aber der Server scheint nicht in der Lage, das "Ping" -Ereignis vom Client zu erhalten. 'tick' wurde verwendet, um sicherzustellen, dass server-> client funktioniert, und 'ping', um client-> server zu testen.
Mit neuester Socket.io (1.4.6) und Express (4.14.0)
server.js:
var express = require('express');
var app = require('express')();
var server = require('http').createServer(app);
var sio = require('socket.io')(server);
var path = require('path');
app.use(express.static(path.join(__dirname, 'public_html')));
// Socket.io
sio.on('connection', (socket) => {
// Store socket ID
var socketID = socket.conn.id;
// Log connection
console.log('Connection:', socketID);
// Ping event
socket.on('ping', (message) => {
console.log('Ping:', socketID, '-', (message || '(no message>'));
});
// Tick event
var tick = function(){
var now = new Date().getTime().toString();
socket.emit('tick', now);
}
setInterval(tick, 5000);
// Disconnect event
socket.on('disconnect',() => {
console.log('Disconnected:', socketID);
});
});
server.listen(4100,() => {
console.log('Listening on :4100');
});
index.html:
<!DOCTYPE html>
<html>
<head>
<title>Websockets Benchmark</title>
</head>
<body>
<script src="/socket.io/socket.io.js"></script>
<script>
// Socket.io
var sio = io();
// Connection event
sio.on('connect',() => {
console.log('Connected');
sio.emit('ping', 'on connect');
});
// Tick event
sio.on('tick', (time) => {
console.log('Tick', time);
});
// Error event
sio.on('error', (e) => {
console.error(e);
});
</script>
</body>
Danke - Ihr Code führte mich nicht direkt zu der Antwort, aber ich denke, die Namen meiner Veranstaltungen kollidiert mit denen von Socket.io – ToshNeox