Skip to content

When data is empty, WebSocket will not fire a message event. #3202

@tsctx

Description

@tsctx
import { WebSocket } from "./index.js";

import { WebSocketServer } from "ws";

const server = new WebSocketServer({ port: 5001 });

server.on("connection", (socket) => {
  socket.on("message", (_data, _isBinary) => {
    socket.send(Buffer.allocUnsafe(0));    // socket.send(""); // or this
  });
});

await new Promise((resolve, _reject) => {
  server.on("listening", resolve);
});

const ws = new WebSocket(`http://localhost:${server.address().port}`);

ws.addEventListener("open", () => {
  ws.send("Hi");
});

ws.addEventListener("message", () => {
  console.log("ok");
  ws.close();
  server.close();
});

ws.addEventListener("error", (err) => {
  process.nextTick(() => {
    throw err;
  });
});

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions