雖然試圖設置一個簡單的NodeJS服務器和Socket.io客戶端來測試WebSockets的東西,但我偶然發現了一些愚蠢的東西。我很肯定這是愚蠢的我已經完成了,因爲我曾經使用過NodeJS/Socket.io,並且從未遇到過這個問題。NodeJS/Socket.io沒有收到來自客戶端的事件
使用下面的代碼,我可以從客戶端上的服務器接收到'tick'事件,但服務器似乎無法從客戶端接收'ping'事件。 'tick'用於確保server-> client工作,'ping'用於測試client-> server。
採用了最新Socket.io(1.4.6)和表達(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>
謝謝 - 你的代碼並沒有引導我直接回答,但我認爲我的事件名稱與Socket.io的名稱相沖突 – ToshNeox