اذهب إلى المحتوى
  • 0

كيفية تنفيذ Socket.io مع next.js بدون خادم منفصل

عبد النور محمد

السؤال

أرغب في إنشاء نظام دردشة باستخدام Next.js. لست متأكدًا من كيفية إعداد خادم socket.

أريد أن يتم تنفيذ هذا الخادم التالي ليس مع خادم منفصل. هل يجب علي إنشاء ملف server.js في rootوتشغيل الخادم؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

ستحتاج إلى إنشاء خادم مخصص ، ومع ذلك ، لا يمكنك النشر في vercel ، وستحصل على تطبيق nodejs عادي. يمكنك استخدام موفري السحابة cloud providers للتعامل مع المقابس sockets نيابة عنك ، أو مثلما انت قلت ، يمكنك تقسيم تطبيقك إلى تطبيق next.js عادي ونشر تطبيق المقبس socket الخاص بك بشكل منفصل.

مثال لخادم مخصص من التوثيق الرسمي

// server.js
const { createServer } = require('http')
const { parse } = require('url')
const next = require('next')

const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()

app.prepare().then(() => {
  createServer((req, res) => {
    /*
    	تأكد من تمرير
        true
        كمُدخل ثاني الى
        parse(req.url, true)
        هذا يُخبر الدالة لقراءة جزء ال
        query
        من
        URL
    */
    const parsedUrl = parse(req.url, true)
    const { pathname, query } = parsedUrl

    if (pathname === '/a') {
      app.render(req, res, '/a', query)
    } else if (pathname === '/b') {
      app.render(req, res, '/b', query)
    } else {
      handle(req, res, parsedUrl)
    }
  }).listen(3000, (err) => {
    if (err) throw err
    console.log('> Ready on http://localhost:3000')
  })
})

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...