Ali Ghaleyan
4 سال پیش توسط Ali Ghaleyan مطرح شد
3 پاسخ

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

سلام دوستان خسته نباشید
یک برنامه سوکت سرور داریم که با 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 شدم ولی درست مشکل رو درک نکردم
ممنون میشم دوستان راهنماییم کنن :)


ثبت پرسش جدید
علیرضا معمارزاده
تخصص : junior level developer
@alireza.mzh 4 سال پیش مطرح شد
1

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


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

socket_server.listen(5)

Ali Ghaleyan
تخصص : برنامه نویس لاراول
@Serjik 4 سال پیش مطرح شد
0

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


علیرضا معمارزاده
تخصص : junior level developer
@alireza.mzh 4 سال پیش مطرح شد

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

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