html
<body>
<h1> 我是 index 页面,我引用了自动生成的 /socket.io/socket.io.js。脚本文件 </h1>
<input type="text" value="" id="inp" />
<button id="btn">点击发送数据给后台</button>
<script type="text/javascript" src="/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socket = io();//前端没有传入任何的服务器 默认会传入当前服务器
//客户端的 io的实例化 就是相当于 socket的链接
socket.on('msg3',function (obj) {
console.log(obj);
})
document.getElementById('btn').onclick = function () {
socket.emit('msg2',document.getElementById('inp').value)
}
</script>
</body>
js
var express = require('express');
var app = express();//实例化一个express的app服务器 创建express服务器 不是必要的
//为了写服务器代码 比较简单
var fs = require('fs');
var http = require('http');
var http1 = http.Server(app);//把app的这个服务器传到 原生的http服务器中
var io = require('socket.io');//引用socket.io模块
var socket = io(http1);//socket的实例化 创建了 以http1 为服务器的 socket的 协议服务器
app.get('/',function (req,res) {
fs.readFile('./index.html',function (err,data) {
if(err){
throw err;
}
res.end(data);
})
})
//socket也是需要做一个监听 链接的监听
socket.on('connection',function (socket) {
// socket.emit 代表是发送的数据的方法来的
// 第一个参数 是 标识符来的
// 第二个或者其他第三个以上的参数 都是想要去传递的 数据来的
var obj = {name:'koo'};
//socket.emit('msg11',obj)
socket.on('msg2',function (data) {
//console.log(data);
socket.broadcast.emit('msg3',data);
})
//socket.broadcast.emit
//广播消息 发送给除了当前发送端之外 所有的客户端
// socket.on 代表监听的方法来的
//第一个参数 也是标识符
// socket.on('msg11',function (obj) {
//
// })
console.log('已经有用户连接上了')
})
http1.listen(8081);