我已按照推荐的方式创建了一个简单的聊天应用程序(工作正常),但我无法弄清楚如何使用Socket.IO在Web套接字上启动jQuery函数。
例如,我有一个单击按钮:
<button id="button">
Click me!
</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?
});
以防万一我的目的不明确 - 单击按钮时我想这样,让所有连接的客户端的背景变为红色。
答案 0 :(得分:3)
首先在点击按钮时向node.js / socket.io-server发出事件。然后在服务器端,您必须向所有客户端发出。在客户端,您必须侦听该服务器端事件。你的服务器看起来也不太好。
尝试类似这样的事情:
"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>