不能从客户端发送套接字消息

所以,我正在设置一个快速的应用程序,像护照,mongoose,连接闪光等所有常见的好东西,我使用socket.io来侦听和发送消息。

目前,我只是向所有人发送消息(稍后将设置房间),一切(但是这个)都很好。 当最终用户访问任何页面时,所有当前连接的用户都会收到一条消息“Hi everyone!”,而刚刚连接的用户显然也会向他们发送消息。 到目前为止所有的预期…

问题:我有一个页面上有一个button…

<button id="register" type="button" class="btn btn-warning">Register</button>

点击时,会发出一条消息,说“我要注册!” (目前给大家,但那并不重要)。 作为回应,服务器应该听取这个信息,并通过发出一个消息回应说'嗯,会考虑它!'。

在服务器上不会听到“注册”,所以不能发出“注册响应”的回复。

任何人都可以看到我做错了什么?

我见过这个SocketIO,不能发送数据从客户端和其他几个相似,但我已经做了他们所build议的:/

NB :应用程序运行在http://localhost:3000/和使用http://localhost:8678/events的io上。 如果您需要更多信息,请告诉我

客户端JS / jQuery(app.js)

 var app = app || {}; app = (function($){ $(function () { ///////////////////////////////////////////////////// // Connect to io and setup listeners ///////////////////////////////////////////////////// var socket = io.connect('http://localhost:8678/events'); socket.on('connected', function (data) { console.log(data); // Always see this in the console }); socket.on('registration-response', function (data) { console.log(data); // NOT seen in console }); ///////////////////////////////////////////////////// // Setup click events ///////////////////////////////////////////////////// $('#register').on('click', function(){ console.log('click'); // Always see this, so no binding issue socket.emit('registering', 'I want to register!'); }); }); })(jQuery); 

服务器端的JS

 var app = require('express'); var http = require('http'); var server = http.createServer(app); var io = require('socket.io').listen(server); //pass a http.Server instance server.listen(8678); //listen on port 8678 //////////////////////////////////////// // Register event listeners //////////////////////////////////////// var events = io.of('/events'); events.on('connection', function(socket){ // This is heard and callback fires events.emit('connected', 'Hi everyone!'); // This gets sent fine }); events.on('registering', function(data){ events.emit('registration-response', 'Hmmm, will think about it!'); }); 

您服务器上的套接字未设置为侦听事件。

你需要这样做

 events.on('connection', function(socket){ // This is heard and callback fires events.emit('connected', 'Hi everyone!'); // This gets sent fine socket.on('registering', function(data){ events.emit('registration-response', 'Hmmm, will think about it!'); }); }); 

套接字现在知道接收到“注册”事件后该怎么做,并将响应发送到“/ events”命名空间。