راکت

اتصال WebSocket به سوکت سرور python

3 پاسخ

سلام دوستان خسته نباشید
یک برنامه سوکت سرور داریم که با python نوشته شده

import socket

host = '127.0.0.1'
port = 8081

socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

socket_server.bind((host, port))

socket_server.listen()

while True:
    client, addr = socket_server.accept()
    print('Connected by', addr)
    data = client.recv(1024)
    print(data)
    if not data:
        break
    client.sendall(data)

و به کمک کد زیر توسط javascript سعی داشتیم به سرور متصل بشیم...

let socket = new WebSocket("ws://127.0.0.1:8081");
socket.onerror = function (error) {
        alert(`[error] ${error.message}`);
    };

اما به ارور زیر برخوردیم:

WebSocket connection to 'ws://127.0.0.1:8081/' failed: Error during WebSocket handshake: net::ERR_INVALID_HTTP_RESPONSE

در جستجو های دست و پا شکسته ی خودم متوجه یه اصطلاحی به اسم handshake شدم ولی درست مشکل رو درک نکردم
ممنون میشم دوستان راهنماییم کنن :)

Ali Ghaleyan
Ali Ghaleyan
@Serjik
ثبت پرسش جدید

پاسخ‌ها

3
علیرضا معمارزاده
علیرضا معمارزاده
@alireza.mzh

تخصص: junior level developer

@Serjik
سلام ارادت
مفهوم handshake یا دست دادن در ارتباطات کلاینت و سرور به این معنی هستش که زمانی که کلاینت بخواد ارتباطی با سرور برقرار کنه ابتدا syn میفرسته و بعد از اون سرور اون syn (یا همون پیام خیلی کوتاه) رو دریافت میکنه و یک تاییدیه یا ack برای کلاینت میفرسته بعد از اون کلاینت هم یک ack برای برقراری ارتباط میفرسته.
بعد از تمام این حالات ارتباط کلاینت با سرور برقرار شده و کلاینت میتونه به مبادله پیامهاش بپردازه.
به این داستان بالا یه دست دادن 3 طرفه یا 3way handshake گفته میشه.


برای کد بالا هم میگه که نتونسته با سرور ارتباط برقرار کنه.
تو قسمت لیسنیگ سرور مشخص نکردید که بتونه به چنتا درخواست پاسخ بده
به صورت زیر عمل کنید ممکنه مشکل حل بشه
اگر حل نشد به قسمت آخر دوره پایتون سایت مراجعه کنید

socket_server.listen(5)
Ali Ghaleyan
Ali Ghaleyan
@Serjik

تخصص: برنامه نویس لاراول

@alireza.mzh
دوست عزیز ممنون بابت توضیحاتتون
این کدی که گفتید رو تغییر دادم اما باز ارور سر جاش هست
شما نمونه کدی از این handshake دارید که بتونه کمکمون کنه
یا اینکه چطور این handshake رو انجام بدیم
باز هم ممنون

شاید پاسخ شما همین‌جا باشد

علیرضا معمارزاده
علیرضا معمارزاده
@alireza.mzh

تخصص: junior level developer

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام