Ana içeriğe geç

Sunucu Başlatma

Socket.IO sunucu kütüphanesini yükledikten sonra sunucuyu başlatabilirsiniz. Seçeneklerin tam listesi burada bulunabilir.

ipucu

TypeScript kullanıcıları, olaylar için tür ipuçları sağlama imkanına sahiptir. Lütfen şunu kontrol edin.

Başlatma

Bağımsız

const { Server } = require("socket.io");

const io = new Server({ /* options */ });

io.on("connection", (socket) => {
// ...
});

io.listen(3000);
import { Server } from "socket.io";

const io = new Server({ /* options */ });

io.on("connection", (socket) => {
// ...
});

io.listen(3000);
import { Server } from "socket.io";

const io = new Server({ /* options */ });

io.on("connection", (socket) => {
// ...
});

io.listen(3000);

Ayrıca, bağlantı noktasını ilk argüman olarak geçebilirsiniz:

const { Server } = require("socket.io");

const io = new Server(3000, { /* options */ });

io.on("connection", (socket) => {
// ...
});
import { Server } from "socket.io";

const io = new Server(3000, { /* options */ });

io.on("connection", (socket) => {
// ...
});
import { Server } from "socket.io";

const io = new Server(3000, { /* options */ });

io.on("connection", (socket) => {
// ...
});

Bu, dolaylı olarak bir Node.js HTTP sunucusunu başlatır ve io.httpServer aracılığıyla erişilebilir.

HTTP sunucusu ile

const { createServer } = require("http");
const { Server } = require("socket.io");

const httpServer = createServer();
const io = new Server(httpServer, { /* options */ });

io.on("connection", (socket) => {
// ...
});

httpServer.listen(3000);
import { createServer } from "http";
import { Server } from "socket.io";

const httpServer = createServer();
const io = new Server(httpServer, { /* options */ });

io.on("connection", (socket) => {
// ...
});

httpServer.listen(3000);
import { createServer } from "http";
import { Server } from "socket.io";

const httpServer = createServer();
const io = new Server(httpServer, { /* options */ });

io.on("connection", (socket) => {
// ...
});

httpServer.listen(3000);

HTTPS sunucusu ile

const { readFileSync } = require("fs");
const { createServer } = require("https");
const { Server } = require("socket.io");

const httpsServer = createServer({
key: readFileSync("/path/to/my/key.pem"),
cert: readFileSync("/path/to/my/cert.pem")
});

const io = new Server(httpsServer, { /* options */ });

io.on("connection", (socket) => {
// ...
});

httpsServer.listen(3000);
import { readFileSync } from "fs";
import { createServer } from "https";
import { Server } from "socket.io";

const httpsServer = createServer({
key: readFileSync("/path/to/my/key.pem"),
cert: readFileSync("/path/to/my/cert.pem")
});

const io = new Server(httpsServer, { /* options */ });

io.on("connection", (socket) => {
// ...
});

httpsServer.listen(3000);
import { readFileSync } from "fs";
import { createServer } from "https";
import { Server } from "socket.io";

const httpsServer = createServer({
key: readFileSync("/path/to/my/key.pem"),
cert: readFileSync("/path/to/my/cert.pem")
});

const io = new Server(httpsServer, { /* options */ });

io.on("connection", (socket) => {
// ...
});

httpsServer.listen(3000);

Ayrıca bakınız: Node.js belgeleri

Müşteri sertifikası kimlik doğrulaması ile:

Sunucu

import { readFileSync } from "fs";
import { createServer } from "https";
import { Server } from "socket.io";

const httpsServer = createServer({
key: readFileSync("/path/to/server-key.pem"),
cert: readFileSync("/path/to/server-cert.pem"),
requestCert: true,
ca: [
readFileSync("/path/to/client-cert.pem")
]
});

const io = new Server(httpsServer, { /* options */ });

io.engine.on("connection", (rawSocket) => {
// sertifika bilgilerine ihtiyacınız varsa (iki tarafın el sıkışma işlemi tamamlandığında artık mevcut değildir)
rawSocket.peerCertificate = rawSocket.request.client.getPeerCertificate();
});

io.on("connection", (socket) => {
console.log(socket.conn.peerCertificate);
// ...
});

httpsServer.listen(3000);

Müşteri

import { readFileSync } from "fs";
import { io } from "socket.io-client";

const socket = io("https://example.com", {
key: readFileSync("/path/to/client-key.pem"),
cert: readFileSync("/path/to/client-cert.pem"),
ca: [
readFileSync("/path/to/server-cert.pem")
]
});

HTTP/2 sunucusu ile

const { readFileSync } = require("fs");
const { createSecureServer } = require("http2");
const { Server } = require("socket.io");

const httpServer = createSecureServer({
allowHTTP1: true,
key: readFileSync("/path/to/my/key.pem"),
cert: readFileSync("/path/to/my/cert.pem")
});

const io = new Server(httpServer, { /* options */ });

io.on("connection", (socket) => {
// ...
});

httpServer.listen(3000);
import { readFileSync } from "fs";
import { createSecureServer } from "http2";
import { Server } from "socket.io";

const httpServer = createSecureServer({
allowHTTP1: true,
key: readFileSync("/path/to/my/key.pem"),
cert: readFileSync("/path/to/my/cert.pem")
});

const io = new Server(httpServer, { /* options */ });

io.on("connection", (socket) => {
// ...
});

httpServer.listen(3000);
import { readFileSync } from "fs";
import { createSecureServer } from "http2";
import { Server } from "socket.io";

const httpServer = createSecureServer({
allowHTTP1: true,
key: readFileSync("/path/to/my/key.pem"),
cert: readFileSync("/path/to/my/cert.pem")
});

const io = new Server(httpServer, { /* options */ });

io.on("connection", (socket) => {
// ...
});

httpServer.listen(3000);

Ayrıca bakınız: Node.js belgeleri

Express ile

const express = require("express");
const { createServer } = require("http");
const { Server } = require("socket.io");

const app = express();
const httpServer = createServer(app);
const io = new Server(httpServer, { /* options */ });

io.on("connection", (socket) => {
// ...
});

httpServer.listen(3000);
import express from "express";
import { createServer } from "http";
import { Server } from "socket.io";

const app = express();
const httpServer = createServer(app);
const io = new Server(httpServer, { /* options */ });

io.on("connection", (socket) => {
// ...
});

httpServer.listen(3000);
import * as express from "express";
import { createServer } from "http";
import { Server } from "socket.io";

const app = express();
const httpServer = createServer(app);
const io = new Server(httpServer, { /* options */ });

io.on("connection", (socket) => {
// ...
});

httpServer.listen(3000);
uyarı

app.listen(3000) kullanmak burada işe yaramayacaktır, çünkü yeni bir HTTP sunucusu oluşturur.

Daha fazla bilgi burada.

Koa ile

const Koa = require("koa");
const { createServer } = require("http");
const { Server } = require("socket.io");

const app = new Koa();
const httpServer = createServer(app.callback());
const io = new Server(httpServer, { /* options */ });

io.on("connection", (socket) => {
// ...
});

httpServer.listen(3000);
import Koa from "koa";
import { createServer } from "http";
import { Server } from "socket.io";

const app = new Koa();
const httpServer = createServer(app.callback());
const io = new Server(httpServer, { /* options */ });

io.on("connection", (socket) => {
// ...
});

httpServer.listen(3000);
import * as Koa from "koa";
import { createServer } from "http";
import { Server } from "socket.io";

const app = new Koa();
const httpServer = createServer(app.callback());
const io = new Server(httpServer, { /* options */ });

io.on("connection", (socket) => {
// ...
});

httpServer.listen(3000);

Daha fazla bilgi burada.

Nest ile

Belgelere buradan ulaşabilirsiniz.

uyarı

NestJS v7 ve altı, Socket.IO v2'ye bağımlıdır, NestJS v8 ise Socket.IO v4'e bağımlıdır. Lütfen uyumlu bir istemci kullanın.

ile

fastify-socket.io eklentisini kaydetmeniz gerekir:

const fastify = require("fastify");
const fastifyIO = require("fastify-socket.io");

const server = fastify();
server.register(fastifyIO);

server.get("/", (req, reply) => {
server.io.emit("hello");
});

server.ready().then(() => {
// sunucunun hazır olmasını beklememiz gerekiyor, aksi takdirde `server.io` tanımsızdır
server.io.on("connection", (socket) => {
// ...
});
});

server.listen({ port: 3000 });
import fastify from "fastify";
import fastifyIO from "fastify-socket.io";

const server = fastify();
server.register(fastifyIO);

server.get("/", (req, reply) => {
server.io.emit("hello");
});

server.ready().then(() => {
// sunucunun hazır olmasını beklememiz gerekiyor, aksi takdirde `server.io` tanımsızdır
server.io.on("connection", (socket) => {
// ...
});
});

server.listen({ port: 3000 });
import fastify from "fastify";
import fastifyIO from "fastify-socket.io";

const server = fastify();
server.register(fastifyIO);

server.get("/", (req, reply) => {
server.io.emit("hello");
});

server.ready().then(() => {
// sunucunun hazır olmasını beklememiz gerekiyor, aksi takdirde `server.io` tanımsızdır
server.io.on("connection", (socket) => {
// ...
});
});

server.listen({ port: 3000 });

µWebSockets.js ile

import { App } from "uWebSockets.js";
import { Server } from "socket.io";

const app = App();
const io = new Server();

io.attachApp(app);

io.on("connection", (socket) => {
// ...
});

app.listen(3000, (token) => {
if (!token) {
console.warn("port zaten kullanımda");
}
});

Reference: https://github.com/uNetworking/uWebSockets.js

Hono (Node.js) ile

const { Hono } = require("hono");
const { serve } = require("@hono/node-server");
const { Server } = require("socket.io");

const app = new Hono();

const httpServer = serve({
fetch: app.fetch,
port: 3000,
});

const io = new Server(httpServer, {
/* options */
});

io.on("connection", (socket) => {
// ...
});
import { Hono } from "hono";
import { serve } from "@hono/node-server";
import { Server } from "socket.io";

const app = new Hono();

const httpServer = serve({
fetch: app.fetch,
port: 3000,
});

const io = new Server(httpServer, {
/* options */
});

io.on("connection", (socket) => {
// ...
});
import { Hono } from "hono";
import { serve } from "@hono/node-server";
import { Server } from "socket.io";
import type { Server as HTTPServer } from "node:http";

const app = new Hono();

const httpServer = serve({
fetch: app.fetch,
port: 3000,
});

const io = new Server(httpServer as HTTPServer, {
/* options */
});

io.on("connection", (socket) => {
// ...
});

Daha fazla bilgi burada.

Seçenekler

Mevcut seçeneklerin tam listesi burada bulunabilir.