Damien Arrachequesne
8ecfcba5c1
chore(release): 4.5.0
...
Diff: https://github.com/socketio/socket.io/compare/4.4.1...4.5.0
4.5.0
2022-04-24 00:45:57 +02:00
Damien Arrachequesne
572133a58d
docs(examples): update example with webpack
2022-04-22 23:10:01 +02:00
Damien Arrachequesne
6e1bb62982
chore: bump engine.io to version 6.2.0
...
Release notes: https://github.com/socketio/engine.io/releases/tag/6.2.0
Diff: https://github.com/socketio/engine.io/compare/6.1.3...6.2.0
2022-04-22 22:43:31 +02:00
Damien Arrachequesne
06e6838b18
docs(examples): add server bundling example with rollup
...
Related: https://github.com/socketio/socket.io/issues/4329
2022-04-22 22:40:15 +02:00
WD
1f03a44d1f
docs(examples): update create-react-app example ( #4347 )
2022-04-20 22:47:34 +02:00
Damien Arrachequesne
be3d7f0f1f
docs(examples): add TODO example with Postgres and Node.js cluster
2022-04-07 12:35:00 +02:00
Damien Arrachequesne
d12aab2d69
docs(examples): add example with express-session
...
Related: https://github.com/socketio/socket.io/issues/3933
2022-04-02 11:08:26 +02:00
Damien Arrachequesne
9f758689f6
docs(examples): pin the version of karma-jasmine-html-reporter
...
Related:
- https://github.com/socketio/socket.io/issues/4325
- https://github.com/dfederm/karma-jasmine-html-reporter/issues/54
2022-04-01 14:42:34 +02:00
Damien Arrachequesne
0b35dc77c0
refactor: make the protocol implementation stricter
...
This commit handles several edge cases that were silently ignored
before:
- receiving several CONNECT packets during a session
- receiving any packet without CONNECT packet first
2022-03-31 12:24:31 +02:00
Damien Arrachequesne
531104d332
feat: add support for catch-all listeners for outgoing packets
...
This is similar to `onAny()`, but for outgoing packets.
Syntax:
```js
socket.onAnyOutgoing((event, ...args) => {
console.log(event);
});
```
2022-03-31 10:35:09 +02:00
Damien Arrachequesne
8b204570a9
feat: broadcast and expect multiple acks
...
Syntax:
```js
io.timeout(1000).emit("some-event", (err, responses) => {
// ...
});
```
The adapter exposes two additional methods:
- `broadcastWithAck(packets, opts, clientCountCallback, ack)`
Similar to `broadcast(packets, opts)`, but:
* `clientCountCallback()` is called with the number of clients that
received the packet (can be called several times in a cluster)
* `ack()` is called for each client response
- `serverCount()`
It returns the number of Socket.IO servers in the cluster (1 for the
in-memory adapter).
Those two methods will be implemented in the other adapters (Redis,
Postgres, MongoDB, ...).
Related:
- https://github.com/socketio/socket.io/issues/1811
- https://github.com/socketio/socket.io/issues/4163
- https://github.com/socketio/socket.io-redis-adapter/issues/445
2022-03-31 07:49:09 +02:00
Damien Arrachequesne
0b7d70ca42
chore: bump lockfile to v2
2022-03-30 08:15:41 +02:00
Szegedi Ádám
2f96438952
chore: bump engine.io version to fix CVE-2022-21676 ( #4262 )
...
Related: https://github.com/socketio/engine.io/security/advisories/GHSA-273r-mgr4-v34f
2022-01-25 22:18:18 +01:00
Chris Swithinbank
02c87a8561
fix(typings): ensure compatibility with TypeScript 3.x ( #4259 )
...
Labeled tuple elements were added in TypeScript 4.0.
Reference: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-0.html#labeled-tuple-elements
Related: 44e20ba5bf
2022-01-25 01:25:05 +01:00
Damien Arrachequesne
37b6d8fff0
chore: update default label for bug reports
2022-01-10 08:55:56 +01:00
Damien Arrachequesne
af54565b2d
docs: remove broken badges
...
Related: https://github.com/socketio/socket.io/issues/4242
2022-01-10 08:03:53 +01:00
Damien Arrachequesne
aa5312a4b6
chore: revert to lockfile v1
...
Updating to v2 fails in the CI on Node.js 12 & 14 with the following
error:
> npm ERR! Error while executing:
> npm ERR! /usr/bin/git ls-remote -h -t ssh://git@github.com/uNetworking/uWebSockets.js.git
> npm ERR!
> npm ERR! Warning: Permanently added the RSA host key for IP address '140.82.113.3' to the list of known hosts.
> npm ERR! git@github.com: Permission denied (publickey).
> npm ERR! fatal: Could not read from remote repository.
> npm ERR!
> npm ERR! Please make sure you have the correct access rights
> npm ERR! and the repository exists.
> npm ERR!
> npm ERR! exited with error code: 128
So we will revert the change for now.
2022-01-06 08:01:00 +01:00
Damien Arrachequesne
c82a4bdf1f
chore(release): 4.4.1
...
Diff: https://github.com/socketio/socket.io/compare/4.4.0...4.4.1
4.4.1
2022-01-06 07:32:03 +01:00
Orkhan Alikhanov
770ee5949f
fix(types): make RemoteSocket.data type safe ( #4234 )
...
Related:
- https://github.com/socketio/socket.io/issues/4229
- fe8730ca0f
2022-01-06 07:14:55 +01:00
Damien Arrachequesne
3bf5d92735
refactor: add note about fetchSockets() for parent namespaces
...
Related: https://github.com/socketio/socket.io/issues/4235
2022-01-05 08:50:40 +01:00
Shayan Yousefi
fc82e44f73
refactor(typings): export Event type ( #4215 )
...
So that it can be used by the end users:
```ts
const myMiddleware = ([eventName, ...args]: Event, next: (err?: Error) => void) => {
console.log(eventName); // inferred as string
next();
}
io.on("connection", (socket) => {
socket.use(myMiddleware);
});
```
2022-01-05 08:08:18 +01:00
Damien Arrachequesne
c840bad43a
test: fix flaky tests
2022-01-05 08:00:55 +01:00
Orkhan Alikhanov
f2b8de7191
fix(typings): pass SocketData type to custom namespaces ( #4233 )
...
The `SocketData` type was only available on the main namespace.
Related: https://github.com/socketio/socket.io/issues/4229
See also: fe8730ca0f
2022-01-04 09:09:42 +01:00
Gray Zhang
51784d0305
chore: add types to exports field to be compatible with nodenext module resolution ( #4228 )
...
See [1] for detail, in `nodenext` module resolution it requires a
`types` field in `exports` with full filename including extension.
[1]: https://github.com/microsoft/TypeScript/issues/46770#issuecomment-966612103
2021-12-28 10:27:08 +01:00
Damien Arrachequesne
c196689545
docs: fix basic crud example
...
Related: https://github.com/socketio/socket.io/issues/4213
2021-12-16 23:00:20 +01:00
Mikhail Dudin
7a70f63499
docs: fix reconnection handling in the chat demo app ( #4189 )
2021-12-01 00:03:43 +01:00
anderslatif
e5897dd7dc
docs: add usage with ES modules ( #4195 )
2021-12-01 00:02:13 +01:00
Damien Arrachequesne
2071a66c5a
docs: simplify nginx cluster example
...
- remove useless Dockerfile
- clean format
- migrate to @socket.io/redis-adapter
2021-11-24 18:15:26 +01:00
Damien Arrachequesne
0f11c4745f
chore(release): 4.4.0
...
Diff: https://github.com/socketio/socket.io/compare/4.3.2...4.4.0
4.4.0
2021-11-18 14:10:19 +01:00
Damien Arrachequesne
b839a3b400
fix: prevent double ack when emitting with a timeout
...
The ack was not properly removed upon timeout, and could be called
twice.
Related: f0ed42f18c
2021-11-18 14:03:07 +01:00
Damien Arrachequesne
f0ed42f18c
feat: add timeout feature
...
Usage:
```js
socket.timeout(5000).emit("my-event", (err) => {
if (err) {
// the client did not acknowledge the event in the given delay
}
});
```
2021-11-16 20:07:53 +01:00
Damien Arrachequesne
b7213e71e4
test: fix flaky test
...
`srv.close()` only closes the underlying HTTP server, but this does not
terminate the existing WebSocket connections.
Reference: https://nodejs.org/api/http.html#serverclosecallback
2021-11-16 15:58:55 +01:00
Damien Arrachequesne
2da82103d2
test: add test for volatile packet with binary
...
See also: 88eee5948a
2021-11-16 15:57:32 +01:00
Damien Arrachequesne
02b0f73e2c
fix: only set 'connected' to true after middleware execution
...
The Socket instance is only considered connected when the "connection"
event is emitted, and not during the middleware(s) execution.
```js
io.use((socket, next) => {
console.log(socket.connected); // prints "false"
next();
});
io.on("connection", (socket) => {
console.log(socket.connected); // prints "true"
});
```
Related: https://github.com/socketio/socket.io/issues/4129
2021-11-12 07:31:52 +01:00
Damien Arrachequesne
c0d8c5ab23
feat: add an implementation based on uWebSockets.js
...
Usage:
```js
const { App } = require("uWebSockets.js");
const { Server } = require("socket.io");
const app = new App();
const server = new Server();
server.attachApp(app);
app.listen(3000);
```
The Adapter prototype is updated so we can benefit from the publish
functionality of uWebSockets.js, so this will apply to all adapters
extending the default adapter.
Reference: https://github.com/uNetworking/uWebSockets.js
Related:
- https://github.com/socketio/socket.io/issues/3601
- https://github.com/socketio/engine.io/issues/578
2021-11-12 07:01:55 +01:00
Nikita Kolmogorov
fe8730ca0f
feat: add type information to socket.data ( #4159 )
...
Usage:
```js
interface SocketData {
name: string;
age: number;
}
const io = new Server<ClientToServerEvents, ServerToClientEvents, InterServerEvents, SocketData>();
io.on("connection", (socket) => {
socket.data.name = "john";
socket.data.age = 42;
});
```
2021-11-08 15:21:48 +01:00
Damien Arrachequesne
ed8483da4d
chore(release): 4.3.2
...
Diff: https://github.com/socketio/socket.io/compare/4.3.1...4.3.2
4.3.2
2021-11-08 06:39:20 +01:00
Sebastiaan Marynissen
9d86397243
fix: fix race condition in dynamic namespaces ( #4137 )
...
Using an async operation with `io.use()` could lead to the creation of
several instances of a same namespace, each of them overriding the
previous one.
Example:
```js
io.use(async (nsp, auth, next) => {
await anOperationThatTakesSomeTime();
next();
});
```
Related: https://github.com/socketio/socket.io/pull/4136
2021-10-24 07:46:29 +02:00
Naseem
44e20ba5bf
refactor: add event type for use() ( #4138 )
2021-10-24 07:19:43 +02:00
Damien Arrachequesne
ccc5ec39a8
chore(release): 4.3.1
...
Diff: https://github.com/socketio/socket.io/compare/4.3.0...4.3.1
4.3.1
2021-10-17 00:02:16 +02:00
Josh Field
0ef2a4d02c
fix: fix server attachment ( #4127 )
...
The check excluded an HTTPS server from being properly attached.
Related: https://github.com/socketio/socket.io/issues/4124
2021-10-16 23:58:55 +02:00
Damien Arrachequesne
95810aa62d
chore(release): 4.3.0
...
Diff: https://github.com/socketio/socket.io/compare/4.2.0...4.3.0
4.3.0
2021-10-14 14:59:13 +02:00
Damien Arrachequesne
60edecb3bd
feat: serve ESM bundle
...
Related:
- 0661564dc2
- https://github.com/socketio/socket.io-client/issues/1198
2021-10-13 18:17:12 +02:00
Damien Arrachequesne
eb5fdbd03e
chore: bump engine.io to version 6.0.0
...
Release notes: https://github.com/socketio/engine.io/releases/tag/6.0.0
Diff: https://github.com/socketio/engine.io/compare/5.2.0...6.0.0
2021-10-12 00:05:10 +02:00
roh-kan
4974e9077c
docs: update .NET client library link ( #4115 )
2021-10-08 14:18:03 +02:00
douira
033c5d399a
fix(typings): add name field to cookie option ( #4099 )
...
Reference: 18a6eb89fb/lib/server.js (L355)
2021-09-20 09:13:38 +02:00
Damien Arrachequesne
7a74b66872
test: remove hardcoded ports
...
Related: https://github.com/socketio/socket.io/issues/3447
2021-09-09 08:57:11 +02:00
Damien Arrachequesne
dc81fcf461
fix: send volatile packets with binary attachments
...
The binary attachments of volatile packets were discarded (only the
header packet was sent) due to a bug introduced by [1].
Related: https://github.com/socketio/socket.io/issues/3919
[1]: dc381b72c6
2021-09-09 08:55:51 +02:00
Damien Arrachequesne
c100b7b61c
chore(release): 4.2.0
...
Diff: https://github.com/socketio/socket.io/compare/4.1.3...4.2.0
4.2.0
2021-08-30 09:21:00 +02:00
Damien Arrachequesne
f03eeca39a
chore: bump dependencies
2021-08-30 08:27:46 +02:00