Skip to content

Commit 73fc77a

Browse files
committed
README.md is updated !
1 parent 607672e commit 73fc77a

File tree

1 file changed

+65
-5
lines changed

1 file changed

+65
-5
lines changed

README.md

Lines changed: 65 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ django-admin startapp socketio_app
4949
On va placer les boûts de code qu'il faut dans certains fichiers de django.
5050

5151
### Configuration de l'URL
52-
- Dans le fichier `django_socketio/settings.py`, insérer la ligne suivante :
52+
1. Dans le fichier `django_socketio/settings.py`, insérer la ligne suivante :
5353

5454
```python
5555
# ...
@@ -64,7 +64,7 @@ que vous (`0.0.0.0`) et l'accès en localhost (`127.0.0.1`) au serveur de l'appl
6464

6565

6666

67-
- Dans le fichier `django_socketio/urls.py`, insérer la ligne suivante :
67+
2. Dans le fichier `django_socketio/urls.py`, insérer la ligne suivante :
6868

6969
```python
7070
from django.conf.urls import url, include
@@ -84,7 +84,7 @@ urlpatterns = [
8484
```
8585

8686

87-
- Dans le dossier `django_socketio/socketio_app/`, créez le fichier `urls.py` et insérer s'y
87+
3. Dans le dossier `django_socketio/socketio_app/`, créez le fichier `urls.py` et insérer s'y
8888
le code suivant :
8989

9090
```python
@@ -102,7 +102,7 @@ urlpatterns = [
102102
### Configuration du serveur en socket.io
103103
On va maintenant mettre en place les fonctionnalités du serveur de socket.io.
104104

105-
- Dans le fichier `django_socketio/socketio_app/views.py` insérer les lignes de code suivantes :
105+
1. Dans le fichier `django_socketio/socketio_app/views.py` insérer les lignes de code suivantes :
106106

107107
```python
108108
import socketio
@@ -116,7 +116,67 @@ sio = socketio.Server(async_mode=async_mode);
116116

117117
```
118118

119-
![OK](https://www.botreetechnologies.com/blog/wp-content/uploads/2020/12/deployment-strategy.jpg)
119+
![Stratégie de déploiement](https://www.botreetechnologies.com/blog/wp-content/uploads/2020/12/deployment-strategy.jpg)
120120

121+
- Le déploiement est délicat, car les sockets ne sont pas basés sur le protocole HTTP. Le serveur d'applications alloue généralement un processus ou un fil distinct pour chaque demande. Par conséquent, nous devons utiliser `Gevent`, qui agit comme une boucle d'événements et chaque fois qu'il y a une demande de connexion, il génère un nouveau thread et attribue la connexion à ce thread.
121122

123+
- Nous avons décidé de séparer l'application socket de l'application normale, car la prise en charge à la fois de la fonction Django normale et de l'application socket dans une seule `application Django` rendait la gestion des réponses aux requêtes lente.
124+
125+
- Le déplacement du code socketio vers une autre application a également facilité la maintenance du code.
126+
127+
128+
2. Dans le dossier `django_socketio/socketio_app/`, créez le dossier `management`, dans ce dernier, créez le dossier `commands`, ensuite, dans le dossier `commands`, créer le fichier `runserver.py`. Dans ce dernier, insérez les lignes de codes suivantes :
129+
130+
```python
131+
from django.core.management.commands.runserver import Command as RunCommand
132+
133+
from socketio_app.views import sio
134+
135+
136+
class Command(RunCommand):
137+
help = 'Run the Socket.IO server'
138+
139+
def handle(self, *args, **options):
140+
if sio.async_mode == 'threading':
141+
super(Command, self).handle(*args, **options)
142+
143+
elif sio.async_mode == 'eventlet':
144+
# deploy with eventlet
145+
import eventlet
146+
import eventlet.wsgi
147+
from django_socketio.wsgi import application
148+
149+
eventlet.wsgi.server(eventlet.listen(('', 8000)), application);
150+
151+
elif sio.async_mode == 'gevent':
152+
# deploy with gevent
153+
from gevent import pywsgi
154+
from django_socketio.wsgi import application
155+
156+
try:
157+
from geventwebsocket.handler import WebSocketHandler
158+
159+
websocket = True;
160+
print('Gevent config is done !\n');
161+
162+
except ImportError:
163+
websocket = False;
164+
165+
if websocket:
166+
pywsgi.WSGIServer(('', 8000), application, handler_class=WebSocketHandler).serve_forever()
167+
168+
else:
169+
pywsgi.WSGIServer(('', 8000), application).serve_forever();
170+
171+
elif sio.async_mode == 'gevent_uwsgi':
172+
print('Start the application through the uwsgi server. Example:');
173+
print('uwsgi --http :5000 --gevent 1000 --http-websockets '
174+
'--master --wsgi-file django_example/wsgi.py --callable '
175+
'application');
176+
177+
else:
178+
print('Unknown async_mode: ' + sio.async_mode)
179+
180+
181+
```
122182

0 commit comments

Comments
 (0)