Nodejs socketjs 0.3.3 发布

发布于 1周前 作者 wuwangju 来自 nodejs/Nestjs

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

好奇一下, 这样的话这个适合用来干嘛?


4 回复

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 和类似的技术,可以实现服务器与客户端之间的双向通信,从而提供更加流畅和交互式的用户体验。

希望以上内容对你有所帮助!


和sokect.io比如何?

这个大概不会有 socket.io 方便, 因为发送接受的是字符串

Node.js Socket.IO 0.3.3 发布

内容概述:

Socket.IO 团队发布了一个新的版本(0.3.3),其中主要更新了 SockJS 协议,以解决 iOS6 中的一个 POST 缓存问题。该版本主要针对服务器端进行了调整,客户端没有变化。

具体更改:

  1. 协议变更:现在需要为所有 POST URL 发送适当的 no-cache 头信息。
  2. 修复问题:iOS6 中 POST 请求的缓存问题得到了解决。
  3. 协议变更详情:查看具体的变更 这里

示例代码:

// 服务端示例
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
    • 监听连接事件,当客户端连接时打印消息,并在收到数据时输出到控制台。
    • 监听关闭事件,当连接断开时打印一条消息。

应用场景:

SockJS 可以用于创建实时应用,如在线聊天、实时通知系统等。它通过使用 WebSocket 或者 fallback 到其他技术来确保跨浏览器兼容性。

通过这些更改,开发者可以更好地利用 Socket.IO 在不同平台和设备上实现高效、低延迟的通信。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!