Damien Arrachequesne
e20d487ac0
fix: properly export the Socket class
...
Before this change, `require("socket.io-client").Socket` would return
"undefined".
Note: having access to the Socket class allows users to modify its
prototype.
Related: https://github.com/socketio/socket.io/issues/3726
2021-05-06 14:24:08 +02:00
Damien Arrachequesne
34f822f783
fix: ensure buffered events are sent in order
...
Before this commit, an event sent in the "connect" handler could be
sent before the events that were buffered while disconnected.
```js
socket.on("connect", () => {
socket.emit("bar");
});
socket.emit("foo"); // buffered while disconnected
```
In the example above, the "bar" event was sent first, which is not
correct.
Related: https://github.com/socketio/socket.io-client/issues/1458
2021-05-06 14:23:25 +02:00
Damien Arrachequesne
dd2a8fce00
fix: ensure connections are properly multiplexed
...
When passing the same `options` argument for two distinct Socket
instances, a new Manager was created:
```js
const opts = {};
const socket1 = io("/foo", opts);
const socket2 = io("/bar", opts);
console.log(socket1.io === socket2.io); // false
```
This bug was introduced by [1].
Note: the `options` argument is modified at the `socket.io-client`
level (path, query) and at the `engine.io-client` level (host, port),
which may not be optimal.
[1]: 7a0c2b504f
Related: https://github.com/socketio/socket.io/issues/3898
2021-05-06 14:22:54 +02:00
YuLe
7e81e66b2f
docs: update README links ( #1459 )
2021-04-07 10:01:43 +02:00
Damien Arrachequesne
2edf0f308c
chore(release): 4.0.1
...
Diff: https://github.com/socketio/socket.io-client/compare/4.0.0...4.0.1
2021-04-01 01:07:04 +02:00
Damien Arrachequesne
86f28c3204
chore: bump engine.io-client version
...
Diff: https://github.com/socketio/engine.io-client/compare/5.0.0...5.0.1
2021-04-01 01:02:25 +02:00
divlo
c15022347c
fix(typings): make auth property public ( #1455 )
...
Related: https://github.com/socketio/socket.io-client/issues/1453
2021-04-01 00:32:21 +02:00
alex.zeng
48f573f6f6
fix(typings): update definition to match wrapper.mjs ( #1456 )
2021-04-01 00:31:43 +02:00
Damien Arrachequesne
d28cde7afc
chore(release): 4.0.0
...
The major bump is due to some breaking changes on the server side.
Diff: https://github.com/socketio/socket.io-client/compare/3.1.2...4.0.0
2021-03-10 12:25:27 +01:00
Damien Arrachequesne
43613d1b2c
fix(bundle): restore support for JS modules
...
This change is needed so the bundle can be used with:
```
<script type="module" src="xxxx/socket.io.js"></script>
```
Related:
- https://github.com/socketio/socket.io/discussions/3828
- 13b32b39a4
- 8c08c5d5c3
2021-03-10 12:17:52 +01:00
KC Erb
6abfa1fa4c
feat: add autoUnref option
...
With autoUnref set to true (default: false), the Socket.IO client will
allow the program to exit if there is no other active timer/socket in
the event system.
```js
const socket = io({
autoUnref: true
});
```
Note: this option only applies to Node.js clients.
Related: https://github.com/socketio/socket.io-client/issues/1446
2021-03-10 12:16:12 +01:00
Damien Arrachequesne
59023657a0
feat: add support for typed events
...
Syntax:
```ts
interface ServerToClientEvents {
"my-event": (a: number, b: string, c: number[]) => void;
}
interface ClientToServerEvents {
hello: (message: string) => void;
}
const socket: Socket<ServerToClientEvents, ClientToServerEvents> = io();
socket.emit("hello", "world");
socket.on("my-event", (a, b, c) => {
// ...
});
```
The events are not typed by default (inferred as any), so this change
is backward compatible.
Related: https://github.com/socketio/socket.io/issues/3742
2021-03-10 01:24:56 +01:00
Damien Arrachequesne
78ec5a6e43
chore(release): 3.1.2
...
Diff: https://github.com/socketio/socket.io-client/compare/3.1.1...3.1.2
2021-02-26 01:10:30 +01:00
Damien Arrachequesne
83a65be78a
chore: bump engine.io-client version
...
Diff: https://github.com/socketio/engine.io-client/compare/4.1.0...4.1.2
2021-02-26 01:08:39 +01:00
Damien Arrachequesne
13b32b39a4
fix: restore support for web workers
...
A previous change ([1], included in 3.0.5) broke support for web
workers, which threw "window is not defined" when importing the bundle
in a web worker.
Related: https://github.com/socketio/socket.io/issues/3809
Reference: https://webpack.js.org/configuration/output/#outputglobalobject
[1]: 8c08c5d5c3
2021-02-26 00:43:26 +01:00
Damien Arrachequesne
311c5d14c3
chore(release): 3.1.1
...
Diff: https://github.com/socketio/socket.io-client/compare/3.1.0...3.1.1
2021-02-03 22:36:17 +01:00
Damien Arrachequesne
7a0c2b504f
fix: include the path in the manager ID
...
Previously, the following code:
```js
const socket1 = io({
path: "/test1"
});
const socket2 = io({
path: "/test2"
});
```
would result in one single Manager, with the "/test2" path being
silently ignored.
Two distinct Manager instances will now be created.
Related: https://github.com/socketio/socket.io-client/issues/1225
2021-02-03 22:31:01 +01:00
Damien Arrachequesne
61afc5d8cb
fix: remove polyfill for process in the bundle
...
A polyfill for Node.js "process" was included in the final bundle.
Reference: https://webpack.js.org/configuration/node/
2021-02-02 12:08:26 +01:00
david-fong
47f917afdd
fix(typings): add return types and general-case overload signatures ( #1440 )
2021-02-02 11:29:08 +01:00
Mick Lawitzke
f02ab3bc96
fix(typings): fix the type of the "query" option ( #1439 )
...
Having type `Object` it was not possible to set values, e.g.:
```ts
if (!this.socket.io.opts.query) {
this.socket.io.opts.query = {};
}
this.socket.io.opts.query.token = 'abc123';
```
Results in error:
> Element implicitly has an 'any' type because expression of type '"token"' can't be used to index type 'Object'.
2021-02-02 11:26:33 +01:00
Damien Arrachequesne
be81a2ce6f
chore: point towards the master branch for the CI badge
2021-01-28 14:17:28 +01:00
Damien Arrachequesne
0a63a17f63
refactor: remove unused line
...
In Socket.IO v2, the Socket `query` option was sent when connecting to
a custom namespace (but not for the main namespace).
This was fixed in Socket.IO v3 ([1]), so this line is now useless.
[1]: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/#Add-a-clear-distinction-between-the-Manager-query-option-and-the-Socket-query-option
2021-01-28 12:27:02 +01:00
Damien Arrachequesne
5529f34aaf
chore(release): 3.1.0
...
Diff: https://github.com/socketio/socket.io-client/compare/3.0.5...3.1.0
2021-01-15 02:15:57 +01:00
Damien Arrachequesne
5d9b4eb42b
chore: bump socket.io-parser version
...
Diff: https://github.com/socketio/socket.io-parser/compare/4.0.3...4.0.4
2021-01-15 01:59:56 +01:00
Damien Arrachequesne
13e16b9b79
chore: bump engine.io-client version
...
Diff: https://github.com/socketio/engine.io-client/compare/4.0.6...4.1.0
2021-01-15 01:56:01 +01:00
Mick Lawitzke
fe97243fab
fix(typings): make Manager#opts public ( #1437 )
...
As stated in the [documentation][1], the query option can be set by
setting `socket.io.opts` but `opts` was private and readonly.
[1]: https://socket.io/docs/v3/client-api/#With-query-option
2021-01-11 22:47:28 +01:00
Damien Arrachequesne
4922e397f4
docs: points towards the website
...
The website is now much more stable, so there's no need to keep two
copies of the same content (which must be manually kept in sync).
2021-01-08 15:13:43 +01:00
Damien Arrachequesne
bcdd3bef85
chore(release): 3.0.5
...
Diff: https://github.com/socketio/socket.io-client/compare/3.0.4...3.0.5
2021-01-05 12:02:52 +01:00
Damien Arrachequesne
cf9fc35836
chore: bump debug version
2021-01-05 11:46:06 +01:00
Damien Arrachequesne
53c73749a8
fix: emit a connect_error event upon connection failure
...
Related: https://github.com/socketio/socket.io/issues/3734
2021-01-05 11:42:54 +01:00
Damien Arrachequesne
b83f89c901
fix(typings): make sendBuffer and receiveBuffer public
...
See also: https://socket.io/docs/v3/client-offline-behavior/#Buffered-events
2021-01-05 10:17:58 +01:00
Damien Arrachequesne
8c08c5d5c3
refactor: remove global polyfill from webpack config
...
Fixes https://github.com/socketio/socket.io-client/issues/1407
2021-01-05 10:15:27 +01:00
Damien Arrachequesne
2874d5f972
chore: update GitHub issue templates
2020-12-30 11:45:17 +01:00
david-fong
7bc7a7b624
refactor: switch to native javascript bind ( #1423 )
...
The polyfill for the bind() method was necessary for IE6/7/8, which we
do not support anymore.
Related: https://caniuse.com/mdn-javascript_builtins_function_bind
2020-12-11 11:55:57 +01:00
Damien Arrachequesne
085cd6c56d
chore(release): 3.0.4
...
Diff: https://github.com/socketio/socket.io-client/compare/3.0.3...3.0.4
2020-12-07 11:43:11 +01:00
Damien Arrachequesne
f8f60fc860
fix: keep track of active sockets
...
When a given socket was disconnected, either by the server-side or by the client-side, the manager was closed too, regardless of the other connected sockets.
```js
const socket1 = io({
autoConnect: false
});
const socket2 = io("/test");
socket1.disconnect(); // also disconnect socket2
```
This bug was introduced in [1].
[1]: b60e909039
2020-12-07 11:24:15 +01:00
Damien Arrachequesne
ec1f8c3474
fix: emit an error when reaching a v2.x server
...
A WebSocket-only v3.x client is able to reach a v2.x server, as the
Engine.IO handshake are compatible, but the v2.x server does not send
a sid in the Socket.IO handshake, which resulted in:
> Uncaught TypeError: Cannot read property 'sid' of undefined
A 'connect_error' event will now be emitted.
References:
- https://github.com/socketio/engine.io-protocol#difference-between-v3-and-v4
- https://github.com/socketio/socket.io-protocol#difference-between-v5-and-v4
- https://socket.io/docs/v3/migrating-from-2-x-to-3-0/
2020-12-07 11:18:55 +01:00
david-fong
226b491846
refactor(typings): make typing information more specific ( #1418 )
2020-12-07 09:06:57 +01:00
Damien Arrachequesne
adffc03977
ci: migrate to GitHub Actions
...
Due to the recent changes to the Travis CI platform (see [1]), we will
now use GitHub Actions to run the tests.
Reference: https://docs.github.com/en/free-pro-team@latest/actions/guides/building-and-testing-nodejs
[1]: https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing
2020-12-07 09:02:41 +01:00
Luiz Pereira
b3de861a92
fix(typings): export extraHeaders option ( #1410 )
2020-11-20 23:09:27 +01:00
Damien Arrachequesne
66e4fdf2e6
chore(release): 3.0.3
...
Diff: https://github.com/socketio/socket.io-client/compare/3.0.2...3.0.3
2020-11-19 01:01:33 +01:00
Damien Arrachequesne
e2a4c56709
chore: cleanup dist folder before compilation
2020-11-19 00:59:42 +01:00
Damien Arrachequesne
bec15240ea
fix: properly export io in ES modules wrapper
...
The syntax was invalid:
```
export const io = io;
^
SyntaxError: Identifier 'io' has already been declared
at Loader.moduleStrategy (internal/modules/esm/translators.js:122:18)
```
2020-11-19 00:56:25 +01:00
Damien Arrachequesne
a883e3238e
chore(release): 3.0.2
...
Diff: https://github.com/socketio/socket.io-client/compare/3.0.1...3.0.2
2020-11-18 00:00:42 +01:00
Damien Arrachequesne
719307801a
fix(typings): export withCredentials option
...
Related: https://github.com/socketio/socket.io-client/issues/1405
2020-11-17 23:54:57 +01:00
Damien Arrachequesne
625d146f28
chore: bump engine.io-client version
...
Diff: https://github.com/socketio/engine.io-client/compare/4.0.2...4.0.4
2020-11-17 23:54:57 +01:00
Damien Arrachequesne
7b3ec9fad9
fix: add io as named exports
...
The TypeScript (build/index.d.ts) and ES modules exports did not match,
which caused issues with webpack and ts-loader.
Related: https://github.com/socketio/socket.io-client/issues/1396
2020-11-17 23:54:56 +01:00
Yusuke Sakurai
96cd2c9ae4
fix(typings): export ManagerOptions ( #1398 )
2020-11-17 00:03:22 +01:00
Damien Arrachequesne
969d5c95f8
chore(release): 3.0.1
...
Diff: https://github.com/socketio/socket.io-client/compare/3.0.0...3.0.1
2020-11-09 10:27:33 +01:00
Damien Arrachequesne
ca34eddf4b
chore: bump engine.io-client version
2020-11-09 10:23:42 +01:00