socket.io进阶 双人聊天室举例

//服务端

// Setup basic express server
var express = require('express');
var app = express();
var path = require('path');
var server = require('http').createServer(app);
var io = require('../..')(server);
var port = process.env.PORT || 8080;

server.listen(port, function () {
  console.log('Server listening at port %d', port);
});

// Routing
app.use(express.static(path.join(__dirname, 'public')));

io.on('connection', function (socket) {
    var url = socket.request.headers.referer;
    //room 根据具体的生成或者添加
    var room=url.split('room_id')[1].substring(1);
    socket.join(room);
    socket.on('disconnect', function(){
        console.log('user disconnected');
    });
    socket.on('new message', function (data) {
        io.to(room).emit('receive message',data );
    });
});

 

//客户端

index.html

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Socket.IO Chat Example</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
<input class="input" type="text" maxlength="14" />
<button id="bbb">点击发送消息</button>
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script src="/main.js"></script>
</body>
</html>

 

main.js

$(function() {
  var socket = io();
  $('#bbb').click(function(){
      var message=$('.input').val()
      if(message){
          socket.emit('new message',message)
      }else{
          alert('请输入信息')
      }

  })

    socket.on('receive message', function (data) {
        console.log(data);
    });
});

 

npm install

npm start

打开2个链接:

localhost:8080/?room_id=%27room1%27     

 

 

posted @ 2018-01-26 11:24  莺哥  阅读(471)  评论(0编辑  收藏  举报