• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed JavaScript sockets

Object Storage Arubacloud
0 głosów
216 wizyt
pytanie zadane 9 lutego 2020 w JavaScript przez MsMaciek123 Pasjonat (24,760 p.)
zamknięte 9 lutego 2020 przez MsMaciek123

Witam, chciałbym uzyskać połączenie pomiędzy JavaScript a Python, głównie jakiś socket. Serwer mam oprogramowany:
 

import socket
import threading
import utils
import time

l_conn = []

def enc(txt):
	return txt.encode('UTF-8')

def dec(txt):
	return txt.decode('UTF-8')

def receiving(conn, addr, r_bytes=1024):
	while True:
		data = dec(conn.recv(r_bytes))
		print(str(data))
		
		if(not data):
			print("[!] " + str(addr) + " disconnected")
			if(conn in l_conn):
				l_conn.remove(conn)
			return False
		
		elif(utils.str_start(data, '01')):
			data = data[2:]
			print("[===] Saving to file data: " + data)
		else:
			print("[!] Unidentified data error")
			

def listening():
	while True:
		c_conn, c_addr = s.accept()
		threading.Thread(target=receiving, args=(c_conn,c_addr,)).start()
		print("[!] New connection: " + str(c_conn))
		l_conn.append(c_conn)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1', 65432))
s.listen()
threading.Thread(target=listening).start()

print("[!] Server ready!\nWaiting for connections!")
print("\n\nConsole: (use 'end' to close session)")
while True:
	print("CMD> ", end='')
	cmd = input()
	if(cmd == "end"):
		s.close()
		exit()
	else:
		for aconn in l_conn:
			aconn.sendall(enc(cmd))

 

Gorzej z JavaScriptem. Skopiowałem z którejś strony coś takiego:
 

var net = require('net');

var client = new net.Socket();
client.connect(65432, '127.0.0.1', function() {
	console.log('Connected');
	client.write('Hello, server! Love, Client.');
});

client.on('data', function(data) {
	console.log('Received: ' + data);
	client.destroy(); // kill client after server's response
});

to wywalało: ReferenceError: require is not defined

 

Potem pobrałem require.js i wyrzuciło coś takiego:
Error: Module name "net" has not been loaded yet for context: _. Use require([]) https://requirejs.org/docs/errors.html#notloaded

 

No to użyłem require([]) i wywala:
 

TypeError: net.Socket is not a constructor

Wczytanie się nie powiodło dla elementu „script” ze źródłem „file:///home/user/Pulpit/testwebsite/net.js”.

Error: Script error for "net"
https://requirejs.org/docs/errors.html#scripterror

No i już padam, nie wiem co robić. Pomoże ktoś?

komentarz zamknięcia: Otrzymano odpowiedź

1 odpowiedź

+1 głos
odpowiedź 9 lutego 2020 przez Comandeer Guru (600,810 p.)
wybrane 9 lutego 2020 przez MsMaciek123
 
Najlepsza

Próbujesz użyć modułu net, który faktycznie jest w JS – ale w Node.js. Po stronie przeglądarki nie da się użyć "surowych" socketów. Musiałbyś użyć WebSockets.

komentarz 9 lutego 2020 przez MsMaciek123 Pasjonat (24,760 p.)
A dałoby się wrzucić ten Node.js na strone, tak żeby klient (jako przeglądarka) mógł utworzyć socket?
komentarz 9 lutego 2020 przez Comandeer Guru (600,810 p.)

Nie, Node.js to środowisko uruchomieniowe JS-a działające poza przeglądarką. Można co najwyżej napisać skrypt, który odpytywałby serwer Node.js, a ten komunikowałby się z aplikacją w Pythonie.

komentarz 9 lutego 2020 przez MsMaciek123 Pasjonat (24,760 p.)
a to i tak dziękuję za pomoc, użyję websocket'ów.

Podobne pytania

0 głosów
0 odpowiedzi 107 wizyt
pytanie zadane 29 maja 2020 w Python przez tonn204 Mądrala (7,440 p.)
0 głosów
1 odpowiedź 1,047 wizyt
pytanie zadane 12 maja 2020 w Python przez tonn204 Mądrala (7,440 p.)
0 głosów
1 odpowiedź 643 wizyt
pytanie zadane 17 sierpnia 2019 w PHP przez ozi22 Nowicjusz (120 p.)

92,555 zapytań

141,403 odpowiedzi

319,555 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...