Events 
The events configuration registers server side events that can be listened to.
Supported Events 
Connection Event 
The connection event is automatically triggered by this plugin any time a client is connected.
Plugin Configuration 
js
module.exports = ({ env }) => ({
	// ...
	io: {
		enabled: true,
		config: {
			contentTypes: ['api::article.article'],
			events: [
				{
					name: 'connection',
					handler: ({ strapi }, socket) => {
						// will log every time a client connects
						strapi.log.info(`[io] a new client with id ${socket.id} has connected`);
					},
				},
			],
		},
	},
});module.exports = ({ env }) => ({
	// ...
	io: {
		enabled: true,
		config: {
			contentTypes: ['api::article.article'],
			events: [
				{
					name: 'connection',
					handler: ({ strapi }, socket) => {
						// will log every time a client connects
						strapi.log.info(`[io] a new client with id ${socket.id} has connected`);
					},
				},
			],
		},
	},
});Custom Events 
Custom server side events can be registered this way as well. It will be up to you to emit them client side.
The example below will update the relevant users name with the provided data each time the client calls emit for the update-user-name event.
Plugin Configuration 
js
module.exports = ({ env }) => ({
	// ...
	io: {
		enabled: true,
		config: {
			contentTypes: ['api::article.article'],
			events: [
				{
					name: 'update-user-name',
					handler: ({ strapi }, socket, name) => {
						strapi.log.info(`[io] trigger update for socket ${socket.id}.`);
						// update the respective users name.
						strapi.entityService.update('plugin::users-permissions.user', id, {
							data: {
								name,
							},
						});
					},
				},
			],
		},
	},
});module.exports = ({ env }) => ({
	// ...
	io: {
		enabled: true,
		config: {
			contentTypes: ['api::article.article'],
			events: [
				{
					name: 'update-user-name',
					handler: ({ strapi }, socket, name) => {
						strapi.log.info(`[io] trigger update for socket ${socket.id}.`);
						// update the respective users name.
						strapi.entityService.update('plugin::users-permissions.user', id, {
							data: {
								name,
							},
						});
					},
				},
			],
		},
	},
});Client Socket 
Once an event is setup it can then be triggered by socket on the client side.
js
const id = 123;
const name = 'lorem ipsum';
socket.emit('update-user-name', socket, id, name);const id = 123;
const name = 'lorem ipsum';
socket.emit('update-user-name', socket, id, name);