Server:

var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs'); app.listen(80);
console.log('server listen on port 80'); function handler (req, res) {
fs.readFile(__dirname + '/public/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
} res.writeHead(200);
res.end(data);
});
} var chatroom=io.of('/chat').on('connection',function(socket){
console.log(id+'connected');
var id=null;
socket.on('setid',function(sid){
id=sid;
socket.emit('id',id);
chatroom.emit('msg',id+' join the chatroom');
});
socket.on('msg',function(msg){
chatroom.emit('msg',id+' : '+msg);
});
})

Client:

<!doctype html>
<html>
<head>
<title>socket.io</title>
<script type="text/javascript" src="/socket.io/socket.io.js"></script>
<style type="text/css">
body{
font: message-box;
}
#output{
height:200px;
border:1px solid #888;
overflow-y: scroll;
}
</style>
</head>
<body>
<div id="output"></div>
<span id="userid"></span>
<input type="text" id="text" placeholder='input your name'>
<button id="btn">connect</button> <script type="text/javascript">
var socket = null;
var btn=document.getElementById('btn');
var text=document.getElementById('text');
var output=document.getElementById('output');
btn.onclick=function(e){
console.log('btn click');
socket = io.connect('http://localhost/chat');
socket.on('connect',function(){
console.log('connect');
socket.emit('setid',text.value);
socket.on('id',function(id){
document.getElementById('userid').innerText=id+':';
});
socket.on('msg',function(msg){
output.innerText+=(msg+'\n');
output.scrollTop=output.scrollHeight;
});
btn.innerText='send';
text.placeholder='input msg';
text.value='';
btn.onclick=function(e){
socket.emit('msg',text.value);
text.value='';
}
});
};
</script>
</body>
</html>

使用nodejs引用socket.io做聊天室的更多相关文章

  1. Socket.io在线聊天室

    从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...

  2. 使用socket.io搭建聊天室

    最近在学习nodejs,需要找一些项目练练手.找来找去发现了一个聊天室的教程,足够简单,也能从中学到一些东西.下面记录我练习过程中待一些笔记. nodeJS模块 共用到了2个模块,express和so ...

  3. node.js + socket.io实现聊天室一

    前段时间,公司打算在社区做一个聊天室.决定让我来做.本小白第一次做聊天类功能,当时还想着通过ajax请求来实现.经过经理提示,说试试当前流行的node.js 和socket.io来做.于是就上网学习研 ...

  4. 使用 Socket.IO 开发聊天室

    前言 Socket.IO 是一个用来实现实时双向通信的框架,其本质是基于 WebSocket 技术. 我们首先来聊聊 WebSocket 技术,先设想这么一个场景: · 用户小A,打开了某个网站的充值 ...

  5. Socket.io官方聊天室DEMO的学习笔记

    照着Socket.io官方的聊天室代码敲了一遍,遇到了一个奇怪的问题: 每次点击SEND按钮的时候,都会重新刷新页面. 在点击页面的一瞬间,看到了正在加载jquery的提示, 然后以为是jquery用 ...

  6. node express+socket.io实现聊天室

    参照网址:https://www.jb51.net/article/135058.htm https://www.cnblogs.com/limitcode/p/7845168.html https: ...

  7. nodejs之socket.io 聊天实现

    写在前面:最近很火的“996”话题,可谓是引起一片热议,马老师说:能够996应该是幸运的,996是对奋斗者的一种机遇(记得不是很清楚).996缺少的是自己的空闲时间了,当我是空闲的时候偶尔996挺好的 ...

  8. 使用nodejs+express+socketio+mysql搭建聊天室

    使用nodejs+express+socketio+mysql搭建聊天室 nodejs相关的资料已经很多了,我也是学习中吧,于是把socket的教程看了下,学着做了个聊天室,然后加入简单的操作mysq ...

  9. nodejs+express+socket.io

    其实官网文档清楚了  https://socket.io/get-started/chat/ 但是因为之前写的是nodejs+express, socket.io是后加的, 还是有小坑 服务器端: 官 ...

随机推荐

  1. 看oracle版本

    源地址:http://www.cnblogs.com/wolfplan/p/3876164.html select * from v$version;

  2. eclipse项目!*图标含义

    一 .项目前面有红色!,表示工程中classpath中指向的包路径错误 解决办法: 右键项目名称 BuildPath ---> Configure Build Paht...中,然后上面有几个选 ...

  3. Spark1.0源码编译

    编译方式一:mavenexport MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"m ...

  4. C#程序用Inno Setup打包,以管理员身份运行的处理方法

    一.C#项目端的处理 目标:快捷方式有带盾的标识 在源码的Properties目录中找到 app.manifest,将其中level="asInvoker" 改成 level=&q ...

  5. GLib基础

    实用功能 GLib中包含了近二十种实用功能,从简单的字符处理到初学者很难理解的XML解析功能,这里介绍两种较简单的:随机数和计时. 下面代码演示如何产生1-100之间的随机整数和演示如何计算30000 ...

  6. java.lang.IllegalArgumentException

    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.Persiste ...

  7. C语言中的fread和fwrite

    C语言中的fread和fwrite是专门用来操作文件的方法. 1. fread负责从打开的文件指针中读取文件内容. 函数原型:size_t fread(void *p, size_t size, si ...

  8. 解决问题 “You don't have permission to access /index.html on this server.”

    前几天装一个linux 企业版5.0安装了apache,打开测试页面的时候出现如下错误: Forbidden You don't have permission to access /index.ht ...

  9. 一个不简单的Procedure body例子

    create or replace package body CountBankData_20150617 is type cursorCommon is ref cursor; --游标类型 str ...

  10. 2013款Mac Pro“神秘”主机详解

    2013款Mac Pro"神秘"主机详解 自2013年12月下旬新款Mac Pro在美国发布以来,经过一个月的等待终于在国内已到货,笔者亲自测试了这个号称"神秘" ...