Nodejs socketjs 0.3.3 发布
Nodejs socketjs 0.3.3 发布
在邮件列表看到发布的更新: https://groups.google.com/forum/?fromgroups=#!msg/sockjs/ZBV-sTeFAp8/JgjUN4HNfGQJ
Good news everyone!
I bumped SockJS-protocol to 0.3.3. SockJS-node and SockJS-erlang were updated as well.
SockJS-client is not updated on this release.
There is only one significant change in the server code - workaround for iOS6 POST caching “feature”.
The protocol change is pretty straightforward - we now need to send proper no-cache headers for all the POST urls. Protocol change: https://github.com/sockjs/sockjs-protocol/commit/3630b4c199ab2e8738f978ac2004b3d8bb6c3c29
Relevant discussions: https://github.com/sockjs/sockjs-protocol/issues/56 https://github.com/sockjs/sockjs-node/pull/88
Thanks to David Glasser from Meteor for proposing a fix.
Cheers, Marek
看 Github 上的源代码说的是提供了一个模仿 websocket 的 Object, 然后还提供了多种语言, ruby, python, lua, python 等绑定… https://github.com/sockjs/sockjs-client
好奇一下, 这样的话这个适合用来干嘛?
Node.js Socket.IO 0.3.3 发布
在邮件列表中看到了最新的更新通知: Socket.IO 0.3.3 发布
更新概览
好消息!我们已经将 SockJS 协议升级到了 0.3.3 版本。这不仅影响了 SockJS-node
,还包括 SockJS-erlang
。然而,SockJS-client
在这次发布中并没有进行更新。
主要变化
本次更新的主要变化是对 iOS 6 中 POST 缓存问题的一个修复。iOS 6 曾经有一个特性,即在 POST 请求中缓存数据,这可能会导致一些意外的行为。为了解决这个问题,现在需要在所有 POST URL 上发送适当的 no-cache 头信息。
协议变更
协议变更相对简单明了。具体来说,我们需要确保在所有 POST 请求的响应头中包含 Cache-Control: no-cache
。这一变更可以通过以下链接查看:
协议变更详情
相关讨论
相关的讨论可以在以下链接中找到:
感谢 David Glasser 从 Meteor 提出的修复建议。
示例代码
为了更好地理解这些变更如何应用到实际代码中,以下是一个简单的 Node.js 示例,展示了如何使用 socket.io
来处理 WebSocket 连接:
const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
// 创建一个 Express 应用
const app = express();
const server = http.createServer(app);
// 启动 socket.io 服务
const io = socketIo(server);
// 监听连接事件
io.on('connection', (socket) => {
console.log('A user connected:', socket.id);
// 发送消息给客户端
socket.emit('message', 'Welcome to the server!');
// 监听客户端的消息
socket.on('clientMessage', (data) => {
console.log('Received message:', data);
socket.broadcast.emit('serverMessage', `Server received: ${data}`);
});
});
// 监听端口
server.listen(3000, () => {
console.log('Server is running on port 3000');
});
使用场景
这种技术非常适合用于实时应用程序,例如在线聊天、实时通知、多人游戏等。通过使用 Socket.IO 和类似的技术,可以实现服务器与客户端之间的双向通信,从而提供更加流畅和交互式的用户体验。
希望以上内容对你有所帮助!
这个大概不会有 socket.io 方便, 因为发送接受的是字符串
Node.js Socket.IO 0.3.3 发布
内容概述:
Socket.IO 团队发布了一个新的版本(0.3.3),其中主要更新了 SockJS 协议,以解决 iOS6 中的一个 POST 缓存问题。该版本主要针对服务器端进行了调整,客户端没有变化。
具体更改:
- 协议变更:现在需要为所有 POST URL 发送适当的 no-cache 头信息。
- 修复问题:iOS6 中 POST 请求的缓存问题得到了解决。
- 协议变更详情:查看具体的变更 这里。
示例代码:
// 服务端示例
const http = require('http');
const sockjs = require('sockjs');
// 创建 HTTP 服务器
const server = http.createServer();
const sockjsServer = sockjs.createServer();
sockjsServer.on('connection', (conn) => {
conn.on('data', (message) => {
console.log('Received message:', message);
});
conn.on('close', () => {
console.log('Connection closed');
});
});
sockjsServer.installHandlers(server, { prefix: '/echo' });
server.listen(3000, () => {
console.log('Server listening on port 3000');
});
解释:
- 服务端代码:
- 创建一个 HTTP 服务器并监听在
3000
端口。 - 使用
sockjs
创建一个 WebSocket 服务器,并设置处理路径为/echo
。 - 监听连接事件,当客户端连接时打印消息,并在收到数据时输出到控制台。
- 监听关闭事件,当连接断开时打印一条消息。
- 创建一个 HTTP 服务器并监听在
应用场景:
SockJS 可以用于创建实时应用,如在线聊天、实时通知系统等。它通过使用 WebSocket 或者 fallback 到其他技术来确保跨浏览器兼容性。
通过这些更改,开发者可以更好地利用 Socket.IO 在不同平台和设备上实现高效、低延迟的通信。