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

question-closed JavaScript sockets

Aruba Cloud - Virtual Private Server VPS
0 głosów
295 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 (606,480 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 (606,480 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 130 wizyt
pytanie zadane 29 maja 2020 w Python przez tonn204 Mądrala (7,470 p.)
0 głosów
1 odpowiedź 1,373 wizyt
pytanie zadane 12 maja 2020 w Python przez tonn204 Mądrala (7,470 p.)
0 głosów
1 odpowiedź 922 wizyt
pytanie zadane 17 sierpnia 2019 w PHP przez ozi22 Nowicjusz (120 p.)

93,264 zapytań

142,260 odpowiedzi

322,234 komentarzy

62,582 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...