Nodejs socket.io 广播消息要怎么广播,主要是指和 FLASH那些客户端的通信的广播
Nodejs socket.io 广播消息要怎么广播,主要是指和 FLASH那些客户端的通信的广播
io.sockets.on(‘connection’,function(client){ client.broadcast.send({message: client.sessionId + ‘is now available’});
client.on('message', function(msg) { client.broadcast({ message: client.sessionId + ': ' + msg.message }); });
client.on('disconnect', function() { client.broadcast({ message: client.sessionId + ' is no longer available'}); });
});
我上面这种广告好像不行 我把 client.broadcast 变为 client.broadcast.emit(); 好像也还是不行 我前端是这样接收的 socket.on(‘message’, function(message){ } 接收不到广播
哪位兄长,有没有nodejs和客户端通信的文档或者DEMO,非websocket哦
要使用 Node.js 和 Socket.IO 进行广播消息,并且确保 Flash 客户端能够接收到这些消息,我们需要确保后端(Node.js)和前端(Flash 或其他客户端)都能正确处理消息的发送和接收。以下是一个简单的示例来演示如何实现这一点。
后端(Node.js)
首先,确保你已经安装了 socket.io
包:
npm install socket.io
然后,创建一个基本的服务器脚本来处理连接、消息和断开连接事件,并进行广播:
const io = require('socket.io')(3000);
io.on('connection', function(socket) {
console.log('A user connected:', socket.id);
// 广播消息给所有连接的客户端(除了发送消息的客户端)
socket.broadcast.emit('message', { message: 'User ' + socket.id + ' has joined the chat' });
socket.on('chat message', function(msg) {
console.log('Message received:', msg);
// 将消息广播给所有连接的客户端
io.emit('message', { message: 'User ' + socket.id + ': ' + msg });
});
socket.on('disconnect', function() {
console.log('User disconnected:', socket.id);
// 当用户断开连接时,广播消息
io.emit('message', { message: 'User ' + socket.id + ' has left the chat' });
});
});
前端(Flash 或其他客户端)
假设你有一个 Flash 客户端或其他支持 WebSocket 的客户端。你需要一个库来处理 WebSocket 连接。例如,你可以使用 as3-websocket
库来处理 Flash 中的 WebSocket 连接。
以下是一个简单的 HTML/JavaScript 客户端示例:
<!DOCTYPE html>
<html>
<head>
<title>Socket.IO Chat</title>
</head>
<body>
<ul id="messages"></ul>
<input id="m" autocomplete="off" /><button>Send</button>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
document.getElementsByTagName('button')[0].addEventListener('click', function() {
var msg = document.getElementById('m').value;
socket.emit('chat message', msg);
document.getElementById('m').value = '';
});
socket.on('message', function(data) {
var item = document.createElement('li');
item.textContent = data.message;
document.getElementById('messages').appendChild(item);
});
</script>
</body>
</html>
解释
-
后端:
- 使用
io.on('connection', ...)
监听新的连接。 - 使用
socket.broadcast.emit()
广播消息给除当前客户端外的所有客户端。 - 处理
disconnect
事件以通知其他客户端某个用户已离开。
- 使用
-
前端:
- 使用
socket.io-client
连接到服务器。 - 发送和接收消息,并在页面上显示。
- 使用
这样,你的 Node.js 服务器可以与 Flash 客户端和其他 WebSocket 客户端进行有效的通信。
socket.broadcast.emit()
这个是向自己以外其他客户端发送消息的样子,
Broadcasting means sending a message to everyone else except for the socket that starts it.
Github 页面上提到了的: https://github.com/learnboost/socket.io
汗. 差点以为没全局发的, 上面链接里找到了
io.sockets.emit('this', { will: 'be received by everyone' });
https://github.com/learnboost/socket.io#sending-and-receiving-events
发现自己发的广播自己收不到,如何确定广播已经发送成功呢?