使用Node.js和Socket.IO单击jQuery函数

我已经创build了一个简单的聊天应用程序推荐(工作正常),但我很难找出如何启动与Socket.IO跨networking套接字的jQueryfunction。

例如,我有一个button来点击:

<button id="button"> Click me! </button> 

我希望我的button在被点击时执行一个函数:

 $("button").click(function() { doSomething(); }); 

这里是我在客户端的一个例子

 var socket = io.connect('http://localhost:3000'); function doSomething() { $('body').css({ background: "red" }); } 

这是我在服务器端(我的server.js文件) – 我认为这可能导致部分问题:

 var io = require('socket.io'), connect = require ('connect'); var app = connect().use(connect.static('public')).listen(3000); var commands = io.listen(app); commands.sockets.on('connection', function (socket){ // Possibly insert handler here? }); 

以防万一我不明确的目的 – 我希望当点击button,让所有连接的客户端的身体背景变成红色。

你必须首先发送一个事件到你的node.js / socket.io服务器上点击button。 然后在服务器端,你必须发射给所有的客户。 在客户端,你必须监听服务器端事件。 另外你的服务器看起来不太好。

尝试这样的例子:

 "use strict"; var server = require('http').createServer(); var io = require('socket.io')(server); io.on('connection', function (socket) { //senden an socket dass er verbunden ist //socket.emit('userOnline', {message: 'verbunden'}); //Informationen vom User holen socket.on('changeBgColor', function (color) { console.log(color); socket.broadcast.emit('changeBgColorEveryWhere', color.color); socket.emit('changeBgColorEveryWhere', color.color); }); }); server.listen('3000'); 

例如在客户端:

 <!doctype html> <html> <head> <title>test</title> </head> <body> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script src="http://localhost:3000/socket.io/socket.io.js"></script> <script type="text/javascript"> var socket = io('ws://localhost:3000/'); $(document).off('click', '#button').on('click', '#button', function (e) { console.log('click'); socket.emit('changeBgColor', {color: 'red'}); e.preventDefault(); }); socket.on('changeBgColorEveryWhere', function (color) { console.log(color); $('body').css('background', color); }); </script> <button id="button">Button</button> </body> </html>