📅  最后修改于: 2023-12-03 14:47:30.503000             🧑  作者: Mango
Socket.IO-客房是一个实时的、双向的、基于WebSockets的通信库。它允许开发者在客户端和服务器之间实现实时通信。Socket.IO-客房是为web应用程序开发者设计的,支持跨浏览器和跨平台,可以与任何前端框架(如Angular、React、Vue等)和任何后端框架(如Node.js、Rails、Django等)一起使用。
可以通过npm安装Socket.IO-客房:
npm install socket.io
以下是一个在Node.js中使用Socket.IO-客房的例子:
const app = require('express')();
const http = require('http').Server(app);
const io = require('socket.io')(http);
io.on('connection', (socket) => {
console.log('a user connected');
socket.on('disconnect', () => {
console.log('user disconnected');
});
socket.on('chat message', (msg) => {
console.log('message: ' + msg);
io.emit('chat message', msg);
});
});
http.listen(3000, () => {
console.log('listening on *:3000');
});
这段代码中,我们首先引入了express
、http
和socket.io
库。通过http.Server
创建一个服务器之后,我们创建了一个socket.io
实例并将其连接到服务器。然后我们监听连接事件,当有用户连接时,在控制台输出提示。当用户断开连接时,我们同样输出提示。当客户端发送chat message
事件时,我们接收消息内容,并使用io.emit
方法将消息内容发送给所有连接到服务器的客户端。
以下是一个在浏览器中使用Socket.IO-客房的例子:
<!DOCTYPE html>
<html>
<head>
<title>Socket.IO-客房</title>
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
</head>
<body>
<ul id="messages"></ul>
<form id="chat">
<input id="m" autocomplete="off" /><button>Send</button>
</form>
<script>
var socket = io();
$('form#chat').submit(function () {
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
socket.on('chat message', function (msg) {
$('#messages').append($('<li>').text(msg));
window.scrollTo(0, document.body.scrollHeight);
});
</script>
</body>
</html>
这段代码中,我们首先在HTML中引入了socket.io.js
文件和jquery
库。我们创建了一个表单以便输入聊天室消息,提交表单时通过socket.emit
方法将消息内容发送给服务器。在客户端接收到服务器发送过来的chat message
事件时,我们将消息内容显示在聊天室中。