Chinaunix首页 | 论坛 | 博客
  • 博客访问: 860959
  • 博文数量: 182
  • 博客积分: 1992
  • 博客等级: 上尉
  • 技术积分: 1766
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-18 11:49
文章分类

全部博文(182)

文章存档

2019年(1)

2016年(5)

2015年(29)

2014年(38)

2013年(21)

2012年(36)

2011年(52)

我的朋友

分类: Java

2015-09-16 19:15:39

ps:根据版本的不断提升,使用的socket.io的版本也要对应提升。

安装nodejs,到网上
在nodejs中安装必要的js,参考npm install --save express
npm install --save socket.io写服务端js,在nodejs中运行的js,运行服务端js:   node app.js

点击(此处)折叠或打开

  1. var app = require('express')();
  2. var http = require('http').Server(app);
  3. var io = require('socket.io')(http);

  4. io.on('connection', function(socket){
  5.   socket.on('chat message', function(msg){
  6.     console.log(msg);
  7.     io.emit('chat message', msg);
  8.   });
  9. });

  10. http.listen(3000, function(){
  11.   console.log('listening on *:3000');
  12. });

点击(此处)折叠或打开

  1. <!doctype html>
  2. <html>
  3.   <head>
  4.     <title>Socket.IO chat</title>
  5.     <style>
  6.       * { margin: 0; padding: 0; box-sizing: border-box; }
  7.       body { font: 13px Helvetica, Arial; }
  8.       form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
  9.       form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }
  10.       form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; }
  11.       #messages { list-style-type: none; margin: 0; padding: 0; }
  12.       #messages li { padding: 5px 10px; }
  13.       #messages li:nth-child(odd) { background: #eee; }
  14.     </style>
  15.   </head>
  16.   <body>
  17.     <ul id="messages"></ul>
  18.     <form action="">
  19.       <input id="m" autocomplete="off" /><button>Send</button>
  20.     </form>
  21.     
  22.     <script src=""></script>
  23.     
  24.     <script type="text/javascript" src="jquery.noty.packaged.min.js"></script>
  25.     <script>
  26.       var socket = io('');
  27.       $('form').submit(function(){
  28.         socket.emit('chat message', $('#m').val());
  29.         $('#m').val('');
  30.         return false;
  31.       });
  32.       socket.on('chat message', function(msg){
  33.         $('#messages').append($('
  34. ').text(msg));
  35.         generate('bottomRight', msg);
  36.       });
  37.     
  38.      function generate(layout, msg) {
  39.         var n = noty({
  40.             text : msg,
  41.             type : 'alert',
  42.             dismissQueue: true,
  43.             layout : layout,
  44.             theme : 'defaultTheme'
  45.         });
  46.         console.log('html: ' + n.options.id);
  47.     }
  48.     </script>
  49.   </body>
  50. </html>
java端代码,会用到

点击(此处)折叠或打开

  1. public class SocketIoTest {
  2.     public static void main(String[] args) throws URISyntaxException {

  3.         final Socket socket = IO.socket("");
  4.         socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

  5.             @Override
  6.             public void call(Object... args) {
  7.                 System.out.println("EVENT_CONNECT");
  8.                 socket.emit("chat message", "hi java");
  9.                 socket.disconnect();
  10.             }

  11.         }).on(Socket.EVENT_ERROR, new Emitter.Listener() {

  12.             @Override
  13.             public void call(Object... args) {
  14.                 System.out.println("EVENT_ERROR");
  15.             }

  16.         }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {

  17.             @Override
  18.             public void call(Object... args) {
  19.                 System.out.println("EVENT_DISCONNECT");
  20.             }

  21.         });
  22.         socket.connect();
  23.         System.out.println(socket.connected());
  24.     
  25.     }
  26. }

这样就可能java,html都可以发送了,如果要实现不同频道,那要用到socket.io中的namespace才能完成,暂时没用,所以不写了。

让nodejs在后台运行
npm install forever -g
forever start your_app.js
forever stop your_app.js
forever restart your_app.js
forever start -l forever.log -o out.log -e err.log your_app.js
forever list

阅读(1473) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~