Note that there are some explanatory texts on larger screens.

plurals
  1. POsimple Express 3.x socket.io chat
    primarykey
    data
    text
    <p>Here is some code from a very popular <a href="http://psitsmike.com/2011/09/node-js-and-socket-io-chat-tutorial/" rel="nofollow noreferrer">webtutorial</a>. Some changes were made in order to use Express 3.x.</p> <p>here is the code of app.js:</p> <pre><code> var express = require('express') , http = require('http'); var app = express(); var server = http.createServer(app); var io = require('socket.io').listen(server); server.listen(8000); // routing app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); // usernames which are currently connected to the chat var usernames = {}; io.sockets.on('connection', function (socket) { // when the client emits 'sendchat', this listens and executes socket.on('sendchat', function (data) { // we tell the client to execute 'updatechat' with 2 parameters io.sockets.emit('updatechat', socket.username, data); }); // when the client emits 'adduser', this listens and executes socket.on('adduser', function(username){ // we store the username in the socket session for this client socket.username = username; // add the client's username to the global list usernames[username] = username; // echo to client they've connected socket.emit('updatechat', 'SERVER', 'you have connected'); // echo globally (all clients) that a person has connected socket.broadcast.emit('updatechat', 'SERVER', username + ' has connected'); // update the list of users in chat, client-side io.sockets.emit('updateusers', usernames); }); // when the user disconnects.. perform this socket.on('disconnect', function(){ // remove the username from global usernames list delete usernames[socket.username]; // update list of users in chat, client-side io.sockets.emit('updateusers', usernames); // echo globally that this client has left socket.broadcast.emit('updatechat', 'SERVER', socket.username + ' has disconnected'); }); }); </code></pre> <p>The obove code is the same code as in the webtutorial only some changes for Express 3.x were made using the <a href="https://stackoverflow.com/questions/14279778/tutorial-for-express-3-x-and-socket-io#_=_">answer of Riwels</a> .</p> <p>here is the code of index.html:</p> <pre><code> &lt;script src="/socket.io/socket.io.js"&gt;&lt;/script&gt; &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"&gt;&lt;/script&gt; &lt;script&gt; var socket = io.connect('http://localhost:8080'); // on connection to server, ask for user's name with an anonymous callback socket.on('connect', function(){ // call the server-side function 'adduser' and send one parameter (value of prompt) socket.emit('adduser', prompt("What's your name?")); }); // listener, whenever the server emits 'updatechat', this updates the chat body socket.on('updatechat', function (username, data) { $('#conversation').append('&lt;b&gt;'+username + ':&lt;/b&gt; ' + data + '&lt;br&gt;'); }); // listener, whenever the server emits 'updateusers', this updates the username list socket.on('updateusers', function(data) { $('#users').empty(); $.each(data, function(key, value) { $('#users').append('&lt;div&gt;' + key + '&lt;/div&gt;'); }); }); // on load of page $(function(){ // when the client clicks SEND $('#datasend').click( function() { var message = $('#data').val(); $('#data').val(''); // tell server to execute 'sendchat' and send along one parameter socket.emit('sendchat', message); }); // when the client hits ENTER on their keyboard $('#data').keypress(function(e) { if(e.which == 13) { $(this).blur(); $('#datasend').focus().click(); } }); }); &lt;/script&gt; &lt;div style="float:left;width:100px;border-right:1px solid black;height:300px;padding:10px;overflow:scroll-y;"&gt; &lt;b&gt;USERS&lt;/b&gt; &lt;div id="users"&gt;&lt;/div&gt; &lt;/div&gt; &lt;div style="float:left;width:300px;height:250px;overflow:scroll-y;padding:10px;"&gt; &lt;div id="conversation"&gt;&lt;/div&gt; &lt;input id="data" style="width:200px;" /&gt; &lt;input type="button" id="datasend" value="send" /&gt; &lt;/div&gt; </code></pre> <p>Socket.io starts well but the app doesn't show any messages yet. Can you get this to work? </p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload