<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.squi.fr/index.php?action=history&amp;feed=atom&amp;title=Python_%3A_Flask_et_SocketIO</id>
	<title>Python : Flask et SocketIO - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.squi.fr/index.php?action=history&amp;feed=atom&amp;title=Python_%3A_Flask_et_SocketIO"/>
	<link rel="alternate" type="text/html" href="https://wiki.squi.fr/index.php?title=Python_:_Flask_et_SocketIO&amp;action=history"/>
	<updated>2026-04-28T01:34:16Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.squi.fr/index.php?title=Python_:_Flask_et_SocketIO&amp;diff=2227&amp;oldid=prev</id>
		<title>Justine le 22 juin 2022 à 12:05</title>
		<link rel="alternate" type="text/html" href="https://wiki.squi.fr/index.php?title=Python_:_Flask_et_SocketIO&amp;diff=2227&amp;oldid=prev"/>
		<updated>2022-06-22T12:05:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 22 juin 2022 à 12:05&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Ligne 1 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 1 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:prog]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:python]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Un chat très simple =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Un chat très simple =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;https://codeburst.io/building-your-first-chat-application-using-flask-in-7-minutes-f98de4adfa5d&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;https://codeburst.io/building-your-first-chat-application-using-flask-in-7-minutes-f98de4adfa5d&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Justine</name></author>
	</entry>
	<entry>
		<id>https://wiki.squi.fr/index.php?title=Python_:_Flask_et_SocketIO&amp;diff=1515&amp;oldid=prev</id>
		<title>Justine le 6 avril 2020 à 17:13</title>
		<link rel="alternate" type="text/html" href="https://wiki.squi.fr/index.php?title=Python_:_Flask_et_SocketIO&amp;diff=1515&amp;oldid=prev"/>
		<updated>2020-04-06T17:13:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 6 avril 2020 à 17:13&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l55&quot;&gt;Ligne 55 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 55 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Et le template:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Et le template:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nowiki&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight lang=&#039;html&#039;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &amp;lt;!DOCTYPE html&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &amp;lt;!DOCTYPE html&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l125&quot;&gt;Ligne 125 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 125 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &amp;lt;/body&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &amp;lt;/body&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &amp;lt;/html&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &amp;lt;/html&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nowiki&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Justine</name></author>
	</entry>
	<entry>
		<id>https://wiki.squi.fr/index.php?title=Python_:_Flask_et_SocketIO&amp;diff=1514&amp;oldid=prev</id>
		<title>Justine : Page créée avec « = Un chat très simple = https://codeburst.io/building-your-first-chat-application-using-flask-in-7-minutes-f98de4adfa5d  Voir les commentaires. On commence par le script... »</title>
		<link rel="alternate" type="text/html" href="https://wiki.squi.fr/index.php?title=Python_:_Flask_et_SocketIO&amp;diff=1514&amp;oldid=prev"/>
		<updated>2020-04-06T17:12:29Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « = Un chat très simple = https://codeburst.io/building-your-first-chat-application-using-flask-in-7-minutes-f98de4adfa5d  Voir les commentaires. On commence par le script... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Un chat très simple =&lt;br /&gt;
https://codeburst.io/building-your-first-chat-application-using-flask-in-7-minutes-f98de4adfa5d&lt;br /&gt;
&lt;br /&gt;
Voir les commentaires. On commence par le script Flask:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;#039;python&amp;#039;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
#coding: utf-8&lt;br /&gt;
from flask import Flask, render_template&lt;br /&gt;
from flask_socketio import SocketIO&lt;br /&gt;
&lt;br /&gt;
#!---------- juchat.py ----------&lt;br /&gt;
#https://codeburst.io/building-your-first-chat-application-using-flask-in-7-minutes-f98de4adfa5d&lt;br /&gt;
#--------------------------------!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#----------! FUNC&lt;br /&gt;
&lt;br /&gt;
#----------! MAIN&lt;br /&gt;
#Déclaration de l&amp;#039;application&lt;br /&gt;
app = Flask(__name__)&lt;br /&gt;
#Utilisée pour signer les cookies&lt;br /&gt;
app.config[&amp;#039;SECRET_KEY&amp;#039;] = &amp;#039;eech8ahNohzeefaJ&amp;#039;&lt;br /&gt;
#Déclaration de l&amp;#039;application SocketIO&lt;br /&gt;
socketio = SocketIO(app)&lt;br /&gt;
&lt;br /&gt;
@app.route(&amp;#039;/&amp;#039;)&lt;br /&gt;
def sessions():&lt;br /&gt;
    return render_template(&amp;#039;sessions.html&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
def messageReceived(methods=[&amp;#039;GET&amp;#039;, &amp;#039;POST&amp;#039;]):&lt;br /&gt;
    print(&amp;#039;Message was received !&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
Partie socketio : SocketIo est une implémentation de WebSocket en java, cross-platform, qui permet d&amp;#039;échanger en bidirectionnel au niveau de la couche application.&lt;br /&gt;
Pour recevoir des messages websocket du client, l&amp;#039;application définit des event handlers en utilisant le décorateur&lt;br /&gt;
socketio.on et elle peut émettre et recevoir des réponses au client connecté avec les fonctions send() et emit()&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@socketio.on(&amp;#039;my event&amp;#039;)&lt;br /&gt;
def handle_my_custom_event(json, methods=[&amp;#039;GET&amp;#039;, &amp;#039;POST&amp;#039;]):&lt;br /&gt;
    print(&amp;#039;Received my event: &amp;#039; + str(json))&lt;br /&gt;
    socketio.emit(&amp;#039;my response&amp;#039;, json, callback=messageReceived)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
Quand &amp;#039;my event&amp;#039; est trigger, la vue handle_my_custom_event reçoit d&amp;#039;abord l&amp;#039;objet json, le print et plus tard l&amp;#039;envoie à l&amp;#039;event &amp;#039;my response&amp;#039;. &lt;br /&gt;
&amp;#039;callback&amp;#039; est une technique pour savoir si le message est reçu par le serveur et appelle la fonction &amp;#039;message received&amp;#039;.&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    socketio.run(app, debug=True)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et le template:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
  &amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Flask_Chat_App&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h3 style=&amp;#039;color: #ccc;font-size: 30px;&amp;#039;&amp;gt;No message yet..&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;message_holder&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ici, on créée les deux boîtes &amp;quot;Username&amp;quot; et &amp;quot;Message&amp;quot;&lt;br /&gt;
	    en utilisant l&amp;#039;élement &amp;quot;form&amp;quot;, qui est connecté à socket.js --&amp;gt;&lt;br /&gt;
    &amp;lt;form action=&amp;quot;&amp;quot; method=&amp;quot;POST&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;input type=&amp;quot;text&amp;quot; class=&amp;quot;username&amp;quot; placeholder=&amp;quot;User Name&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;input type=&amp;quot;text&amp;quot; class=&amp;quot;message&amp;quot; placeholder=&amp;quot;Messages&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;input type=&amp;quot;submit&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- On inclut les scripts jquery et socket.js --&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Ici, on utilise io.connect() pour établir les connections et créer des sessions;&lt;br /&gt;
	    la session est créée en connectant les deux utilisateurs à la même URL, soit&lt;br /&gt;
	    http://127.0.0.1:5000. --&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
      var socket = io.connect(&amp;#039;http://&amp;#039; + document.domain + &amp;#039;:&amp;#039; + location.port);&lt;br /&gt;
&lt;br /&gt;
      /* connect, disconnect, message, json sont des evnets prédéfinis par SocketIO&lt;br /&gt;
      connect et disconnect sont explicites, message envoie un str / json, et json envoie&lt;br /&gt;
      un payload json sous la forme d&amp;#039;un dictionnaire Python.&lt;br /&gt;
&lt;br /&gt;
      Pour envoyer des events, un serveur Flask peut utiliser les fonctions send() et emit()&lt;br /&gt;
      de Flask-SocketIO. La fonction send() envoie un message standard (str / json) et emit()&lt;br /&gt;
      fait la même chose avec avec un nom d&amp;#039;event customisé. */&lt;br /&gt;
      socket.on( &amp;#039;connect&amp;#039;, function() {&lt;br /&gt;
        socket.emit( &amp;#039;my event&amp;#039;, {&lt;br /&gt;
          data: &amp;#039;User Connected&amp;#039;&lt;br /&gt;
        } )&lt;br /&gt;
	/* Après POST du form, un event e est passé en argument. PreventDefault est appellé poour empêcher&lt;br /&gt;
	de submit le form. On prend ensuite les valeurs du username et du message. Ces valeurs&lt;br /&gt;
	sont envoyées dans la fonction emit() à l&amp;#039;event custom my event (dans notre script Flask).&lt;br /&gt;
	Après ça, le field message est vidé pour permettre d&amp;#039;envoyer plus de messages. */&lt;br /&gt;
        var form = $( &amp;#039;form&amp;#039; ).on( &amp;#039;submit&amp;#039;, function( e ) {&lt;br /&gt;
          e.preventDefault()&lt;br /&gt;
          let user_name = $( &amp;#039;input.username&amp;#039; ).val()&lt;br /&gt;
          let user_input = $( &amp;#039;input.message&amp;#039; ).val()&lt;br /&gt;
          socket.emit( &amp;#039;my event&amp;#039;, {&lt;br /&gt;
            user_name : user_name,&lt;br /&gt;
            message : user_input&lt;br /&gt;
          } )&lt;br /&gt;
          $( &amp;#039;input.message&amp;#039; ).val( &amp;#039;&amp;#039; ).focus()&lt;br /&gt;
        } )&lt;br /&gt;
      } )&lt;br /&gt;
&lt;br /&gt;
      /* Une fois le message envoyé à l&amp;#039;event, on doit rendre le message reçu sur la page HTML. Sur une réponse,&lt;br /&gt;
      dès que le message est reçu on le passe à la classe message_holder (on en profite pour enlever le &amp;#039;no message yet&amp;#039;)&lt;br /&gt;
      et nos messages sont ajoutés aux précédents. */&lt;br /&gt;
      socket.on( &amp;#039;my response&amp;#039;, function( msg ) {&lt;br /&gt;
        console.log( msg )&lt;br /&gt;
        if( typeof msg.user_name !== &amp;#039;undefined&amp;#039; ) {&lt;br /&gt;
          $( &amp;#039;h3&amp;#039; ).remove()&lt;br /&gt;
          $( &amp;#039;div.message_holder&amp;#039; ).append( &amp;#039;&amp;lt;div&amp;gt;&amp;lt;b style=&amp;quot;color: #000&amp;quot;&amp;gt;&amp;#039;+msg.user_name+&amp;#039;&amp;lt;/b&amp;gt; &amp;#039;+msg.message+&amp;#039;&amp;lt;/div&amp;gt;&amp;#039; )&lt;br /&gt;
        }&lt;br /&gt;
      })&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Justine</name></author>
	</entry>
</feed>