zoukankan      html  css  js  c++  java
  • socket.io使用初体验

      前段时间接触到websocket + nodejs,由于websocket对于安卓的兼容并不好,工作中遇到了需要兼容安卓的问题,所以,对socket.io进行了一番尝试。由于对后台知识了解不多,所以学起来也是摸索着前进。

      这里就不多做解释了,直接放出代码。

      1.资源全部放在服务器端,本地通过ip和端口来访问:

       

     1 app.js
     2 
     3 var http= require('http'), io= require('socket.io');  
     4 var fs = require('fs'); 
     5 function onreq(req,res){
     6  res.writeHead(200, {"Content-Type": "text/html"});
     7  res.end(fs.readFileSync(__dirname + '/index.html'));
     8 }
     9 
    10 var app = http.createServer(onreq), io = io.listen(app);  
    11 
    12 app.listen(8080); 
    13  
    14 
    15 io.sockets.on('connection', function(socket){ 
    16   socket.emit('news', { hello: 'hello' });
    17  
    18 });
    19 console.log('Is listening 8080');

      

     1 index.html
     2 
     3 <!DOCTYPE html>
     4 <html>
     5 <head>
     6 <meta charset="UTF-8">
     7 <title>socket io Demo</title>
     8 <style>
     9 body{
    10     margin:0;
    11     padding:0;
    12 
    13 }
    14 #box{
    15     margin-right:10px;
    16       border-radius: 5px;
    17       border: 2px solid lightblue;
    18     height:18px;
    19       width:147px;
    20     padding-left:5px;
    21     color:hotpink;
    22 }
    23 
    24 </style>
    25 <script src="http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js"></script>
    26 <script src="/socket.io/socket.io.js"></script>
    27 
    28 </head>
    29 <body>
    30 <h1></h1>
    31 <div id="box"></div>
    32 <input type="text" id="inp" placeholder="请输入名字" />
    33 <button id="click" >click</button>
    34 
    35  <script>
    36 
    37 $(function(){
    38 
    39         socket = io.connect();
    40         
    41             socket.on('news', function (data) {
    42                $('#click').click(function(){ 
    43                        var inpt = $('#inp').val();
    44                $('#box').html( data.hello + ',' + inpt);
    45                });
    46     
    47 
    48 
    49 });    
    50 
    51 </script>
    52 </body>
    53 </html>

      2.页面放本地,通过指定ip和端口来连接服务器:

      

     1 app.js
     2 
     3 var http = require("http");
     4 var io= require('socket.io'); 
     5 var server = http.createServer(function(request, response){
     6     response.writeHead(200,{"Content-Type":"text/html"});
     7     response.write("Socket Start.");
     8     response.end("");
     9 }).listen(8080);
    10  
    11 var socket= io.listen(server); 
    12  
    13 socket.on('connection', function(socket){ 
    14   socket.emit('news', { hello: 'hello' });
    15     
    16   
    17 });
    18 console.log('Is listening 8080');

      

     1 index.html
     2 
     3 <!DOCTYPE html>
     4 <html>
     5 <head>
     6 <meta charset="UTF-8">
     7 <title>socket io Demo</title>
     8 <style>
     9 body{
    10     margin:0;
    11     padding:0;
    12 
    13 }
    14 #box{
    15     margin-right:10px;
    16       border-radius: 5px;
    17       border: 2px solid lightblue;
    18     height:18px;
    19       width:147px;
    20     padding-left:5px;
    21     color:hotpink;
    22 }
    23 
    24 </style>
    25 <script src="js/jquery-1.11.1.min.js"></script>
    26 <script src="http://ip + port/socket.io/socket.io.js"></script>
    27 
    28 </head>
    29 <body>
    30 <h1></h1>
    31 <div id="box"></div>
    32 <input type="text" id="inp" placeholder="请输入名字" />
    33 <button id="click" >click</button>
    34 
    35  <script>
    36 
    37 $(function(){
    38 
    39             socket = io.connect("http://ip + port");
    40         
    41                          socket.on('news', function (data) {
    42             $('#click').click(function(){ 
    43                      var inpt = $('#inp').val();
    44             $('#box').html( data.hello + ',' + inpt);
    45                });
    46 
    47             });
    48 
    49  
    50 
    51  
    52 
    53 
    54 
    55 });    
    56 
    57 </script>
    58 </body>
    59 </html>

      demo很简单,点击按钮时将服务器发过来的hello和输入框中输入的字符连接起来放到id为box的div中显示出来。两种方式大同小异,不过是在文件引用的路径和socket连接的指定上面有所不同,需要注意的就是页面的各种外部文件的引用形式问题,只要引用得当应该就通了 ,有问题看控制台调试一下也就可以了。

  • 相关阅读:
    Entity Framework with NOLOCK
    读取的XML节点中带有冒号怎么办?
    一道数学运算题
    mock基本使用
    json-server基本使用
    axios、ajax、fetch三者的区别
    深入响应式原理
    vue组件传值
    递归与循环的区别
    undefined 和null的区别
  • 原文地址:https://www.cnblogs.com/ihaveahammer/p/3907184.html
Copyright © 2011-2022 走看看