سلام دوستان خسته نباشید
یک برنامه سوکت سرور داریم که با 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 شدم ولی درست مشکل رو درک نکردم
ممنون میشم دوستان راهنماییم کنن :)
@Serjik
سلام ارادت
مفهوم handshake یا دست دادن در ارتباطات کلاینت و سرور به این معنی هستش که زمانی که کلاینت بخواد ارتباطی با سرور برقرار کنه ابتدا syn میفرسته و بعد از اون سرور اون syn (یا همون پیام خیلی کوتاه) رو دریافت میکنه و یک تاییدیه یا ack برای کلاینت میفرسته بعد از اون کلاینت هم یک ack برای برقراری ارتباط میفرسته.
بعد از تمام این حالات ارتباط کلاینت با سرور برقرار شده و کلاینت میتونه به مبادله پیامهاش بپردازه.
به این داستان بالا یه دست دادن 3 طرفه یا 3way handshake گفته میشه.
برای کد بالا هم میگه که نتونسته با سرور ارتباط برقرار کنه.
تو قسمت لیسنیگ سرور مشخص نکردید که بتونه به چنتا درخواست پاسخ بده
به صورت زیر عمل کنید ممکنه مشکل حل بشه
اگر حل نشد به قسمت آخر دوره پایتون سایت مراجعه کنید
socket_server.listen(5)
@alireza.mzh
دوست عزیز ممنون بابت توضیحاتتون
این کدی که گفتید رو تغییر دادم اما باز ارور سر جاش هست
شما نمونه کدی از این handshake دارید که بتونه کمکمون کنه
یا اینکه چطور این handshake رو انجام بدیم
باز هم ممنون
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟