


Panduan ini akan mengajar anda cara membuat pelayan proksi WebSocket dalam Python.
Inilah yang akan dilakukan oleh pelayan:
- Sahkan identiti pelanggan: Sebelum membenarkan pelanggan menyambung, ia akan menyemak sama ada setiap satu mempunyai "kunci pengguna (Kunci API)" yang unik.
- Sambung ke WebSocket lain: Pelayan akan menyambung ke pelayan WebSocket yang berasingan.
- Mesej relay: Pelayan akan menerima mesej daripada WebSocket yang disambungkan dan menghantarnya kepada semua pelanggan yang disahkan.
Sebelum anda memulakan:
- Pastikan anda telah memasang Python 3.6 atau versi yang lebih baharu. WebSockets memerlukan Python 3.6 atau lebih tinggi.
- Pasang pustaka WebSockets: Anda boleh memasangnya menggunakan arahan berikut dalam terminal anda.
pip install websockets
1. Bermula
- Buat folder baharu untuk projek anda.
- Buat fail Python baharu di dalam folder dan namakannya 'websocket_proxy_server.py.' Fail ini akan menyimpan semua kod untuk pelayan anda.
2. Cipta Pelayan WebSocket
- Import perpustakaan yang diperlukan. Anda memerlukan perpustakaan yang anda pasang sebelum ini.
- Bina struktur asas pelayan anda. Gunakan perpustakaan WebSockets untuk mencipta asas untuk pelayan anda.
import asyncio import websockets import json class WebSocketProxy: def init(self, source_url, symbols): self.source_url = source_url self.clients = set() self.symbols = symbols self.valid_user_key = "yourValidUserKey" # Single valid user key for authentication async def on_open(self, ws): print("Connected to source") symbols_str = ",".join(self.symbols.keys()) init_message = f"{{"userKey":"your_api_key", "symbol":"{symbols_str}"}}" await ws.send(init_message)
3. Sambung dan Sahkan Pelanggan
- Pastikan pelayan sudah bersedia untuk menerima sambungan daripada pelanggan.
- Tambahkan cek untuk mengesahkan identiti setiap pelanggan. Semasa pelanggan cuba menyambung, pelayan harus meminta "kunci pengguna." Hanya pelanggan dengan kunci yang betul akan dibenarkan untuk menyambung.
async def client_handler(self, websocket, path): try: # Wait for a message that should contain the authentication key auth_message = await asyncio.wait_for(websocket.recv(), timeout=10) auth_data = json.loads(auth_message) user_key = auth_data.get("userKey") if user_key == self.valid_user_key: self.clients.add(websocket) print(f"Client authenticated with key: {user_key}") try: await websocket.wait_closed() finally: self.clients.remove(websocket) else: print("Authentication failed") await websocket.close(reason="Authentication failed") except (asyncio.TimeoutError, json.JSONDecodeError, KeyError): print("Failed to authenticate") await websocket.close(reason="Failed to authenticate")
4. Sambung ke Sumber dan Kongsi Mesej
- Buat fungsi yang memastikan pelayan disambungkan ke WebSocket asal.
- Fungsi ini harus menghantar mesej yang diterima secara automatik daripada WebSocket asal kepada semua pelanggan yang berjaya disahkan.
async def source_handler(self): async with websockets.connect(self.source_url) as websocket: await self.on_open(websocket) async for message in websocket: await self.broadcast(message) async def broadcast(self, message): if self.clients: await asyncio.gather(*(client.send(message) for client in self.clients))
5. Mulakan Pelayan
- Buat fungsi untuk memulakan pelayan dan mendengar sambungan.
- Tambah kod untuk menjalankan fungsi ini, memulakan pelayan proksi WebSocket anda.
def run(self, host="localhost", port=8765): start_server = websockets.serve(self.client_handler, host, port) asyncio.get_event_loop().run_until_complete(start_server) asyncio.get_event_loop().run_until_complete(self.source_handler()) asyncio.get_event_loop().run_forever() if name == "main": symbols = {"EURUSD": {}, "GBPUSD": {}, "USDJPY": {}, "AUDUSD": {}, "USDCAD": {}} source_url = "ws://example.com/source" proxy = WebSocketProxy(source_url, symbols) proxy.run()
Secara ringkasnya
Anda telah berjaya membangunkan pelayan proksi WebSocket berasaskan Python. Pelayan ini boleh mengesahkan identiti pelanggan, mengekalkan sambungan berterusan ke sumber data yang ditetapkan dan mengedarkan mesej yang diterima daripada sumber kepada semua pelanggan yang disahkan dengan berkesan. Fungsi ini terbukti tidak ternilai untuk aplikasi yang memerlukan penyebaran data yang selamat dan segera daripada asal tunggal kepada pangkalan pengguna yang pelbagai.
Langkah Seterusnya
Ujian pelayan yang teliti adalah penting untuk memastikan prestasi dan kebolehpercayaan yang optimum. Ia mengesahkan pengendalian sambungan dan penghantaran mesej yang betul. Untuk meningkatkan kecekapan, pertimbangkan untuk melaksanakan mekanisme pengimbangan beban dan menyesuaikan pengepala sambungan. Akhir sekali, adalah dinasihatkan untuk menggunakan pelayan ke persekitaran yang sesuai untuk penggunaan pengeluaran, seperti perkhidmatan awan yang direka khusus untuk menampung sambungan rangkaian jangka panjang.
Selain itu, sila lihat tutorial asal yang diterbitkan di tapak web kami: Menskalakan Soket Web Forex dengan Proksi Python
Atas ialah kandungan terperinci Melaksanakan WebSocket Forex Berskala Menggunakan Proksi Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Inpython, youAppendElementStoalistusingTheAppend () method.1) useAppend () forsingLements: my_list.append (4) .2) useextend () or = formultipleelements: my_list.extend (lain_list) ormy_list = [4,5,6] .3) UseInsert () ForSpecificPositions: my_list.insert (1,5) .beaware

Kaedah untuk debug masalah shebang termasuk: 1. Semak garis shebang untuk memastikan ia adalah baris pertama skrip dan tidak ada ruang prefixed; 2. Sahkan sama ada laluan penterjemah adalah betul; 3. Panggil jurubahasa secara langsung untuk menjalankan skrip untuk mengasingkan masalah shebang; 4. Gunakan tali atau amanah untuk mengesan panggilan sistem; 5. Periksa kesan pembolehubah persekitaran pada shebang.

PythonlistscanbemanipulaterAnseveralMethodstoremoveelements: 1) theremove () methodRemoveStHefirStoccrencrentrenceAfaspiedValue.2)

Pythonlistscanstoreanydatatype, termasuk interintegers, strings, floats, booleans, otherlists, dandictionaries

PythonlistsSupportnumerousoperations: 1) addingElementSwithAppend (), extend (), andInsert ()

Buat tatasusunan pelbagai dimensi dengan numpy dapat dicapai melalui langkah-langkah berikut: 1) Gunakan fungsi numpy.array () untuk membuat array, seperti Np.Array ([[1,2,3], [4,5,6]]) untuk membuat array 2D; 2) Gunakan np.zeros (), np.ones (), np.random.random () dan fungsi lain untuk membuat array yang diisi dengan nilai tertentu; 3) Memahami sifat bentuk dan saiz array untuk memastikan bahawa panjang sub-array adalah konsisten dan mengelakkan kesilapan; 4) Gunakan fungsi np.reshape () untuk mengubah bentuk array; 5) Perhatikan penggunaan memori untuk memastikan bahawa kod itu jelas dan cekap.

Broadcastinginginnumpyisamethodtoperformoperationsonarraysofdifferentshapesbyautomaticallyaligningthem.itsImplifiescode, enhancesreadability, andboostsperformance.here'showitworks: 1) smallerarraysarepaddedwithonestomatchdimensions.2) CompatibeSt

Forpythondatastorage, chooselistsforflexabilityWithMixedDatatypes, array.arrayformemory-efficienthomogeneousnumericaldata, andnumpyarraysforadvancednumericalcomputing.listsareversatileButlessefficefientfientfientfientfientfientfientfientfientfientfientfientforydodeSforayDataSetSetShiSforayDataSetSetShiSforayDataSetSetShiSforayDataSetSetShoFficeSforaydataSetShoSforayDataSetsforayDataSetsforayDataSetsforaydataSetShiSforayDodeSforayDodeSforaydataSetRaydataSetRaydataSetRaydataSet


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod
