Socket.IO API 教程与示例

需积分: 14 4 下载量 121 浏览量 更新于2024-07-20 收藏 660KB PDF 举报
"Socket.IO API 文档主要介绍了如何在 Node.js 环境下使用 Socket.IO 框架来实现实时双向通信。Socket.IO 是一个流行的库,它结合了 WebSocket、轮询等多种通信方式,确保在不同浏览器和环境下提供稳定的服务。本文档通过实例展示了在 Node.js 服务器上安装和配置 Socket.IO,以及在客户端进行连接和事件监听的基本步骤。" Socket.IO 是一个针对实时应用的 JavaScript 库,它提供了类似于 WebSocket 的功能,但同时处理了 WebSocket 在不同浏览器兼容性和网络环境下的局限性。Socket.IO 使用多种协议栈,包括 WebSocket、JSONP、Polling 等,确保即使在 WebSocket 不支持的情况下也能保持高效的双向通信。 ### 安装 要在 Node.js 项目中安装 Socket.IO,可以使用 npm (Node Package Manager) 运行以下命令: ``` npm install socket.io ``` ### 使用 Node.js HTTP 服务器 在 Node.js 中,你可以创建一个 HTTP 服务器并挂载 Socket.IO。以下是一个简单的示例: ```javascript var http = require('http').createServer(handler); var io = require('socket.io')(http); var fs = require('fs'); http.listen(80); function handler(req, res) { fs.readFile(__dirname + '/index.html', function(err, data) { if (err) { res.writeHead(500); return res.end('Error loading index.html'); } res.writeHead(200); res.end(data); }); } io.on('connection', function(socket) { socket.emit('news', { hello: 'world' }); socket.on('myotherevent', function(data) { console.log(data); }); }); ``` 在这个例子中,`io.on('connection', ...)` 监听新连接,当客户端连接时,服务器会发送 `'news'` 事件,并在接收到客户端的 `'myotherevent'` 事件时打印数据。 ### 使用 Express 3/4 如果你的项目已经使用了 Express,集成 Socket.IO 很简单。首先创建 Express 应用,然后创建一个 HTTP 服务器,挂载 Socket.IO: ```javascript var express = require('express'); var server = require('http').Server(express()); var io = require('socket.io')(server); server.listen(80); var app = express(); app.get('/', function(req, res) { res.sendfile(__dirname + '/index.html'); }); io.on('connection', function(socket) { // ... }); ``` 在这个 Express 示例中,`app.get('/', ...)` 处理 HTTP 请求,将主页响应为 `index.html`。其他部分与基本 HTTP 服务器类似。 ### 客户端集成 在客户端,你可以通过 `<script>` 标签引入 `socket.io.js` 文件,然后创建一个到服务器的 Socket.IO 连接: ```html <script src="/socket.io/socket.io.js"></script> <script> var socket = io('http://localhost'); socket.on('news', function(data) { console.log(data); socket.emit('myotherevent', { my: 'data' }); }); </script> ``` 客户端的 `socket.on()` 方法监听服务器发送的事件,而 `socket.emit()` 方法用于向服务器发送自定义事件。 总结,Socket.IO 提供了一种简单易用的接口来实现实时应用,无论是在服务器还是客户端。通过其强大的兼容层,开发者可以专注于应用逻辑,而不必担心底层通信协议的复杂性。结合 Express 可以轻松地构建完整的实时 Web 应用。